프로그래밍

c++인데 이거 코드 차이가 뭐냐 도대체

총알 여러개 만드는 코드인데

 

 

스페이스바 누를때마다 새로운 탄환 객체 만드려고함

 

근대 처음에는

 

if (isKeyPressedAndReleased(GLFW_KEY_SPACE))
            {
                for (int i = 0; i <bullet_num; i++)
                {
                    if (b[i] == nullptr)
                    {
                        bb = i;
                        continue;
                    }
                }
                    if (b[bb] == nullptr) {
                        b[bb] = new MyBullet;
                        b[bb]->center = tank.center;
                        b[bb]->center.x += 0.2f;
                        b[bb]->center.y += 0.1f;
                        b[bb]->velocity = vec2(0.5f, 0.0f);
                    }
            }
이렇게 짜서 잘됐는데

 

코드좀 줄일수 있을꺼같아서 

 

        {
            for (int i = 0; i < bullet_num; i++)
            {
                if (bullet[i] == nullptr)
                {
                    bullet[i] = new MyBullet;
                    bullet[i]->center = center;
                    bullet[i]->center.x += 0.2f;
                    bullet[i]->center.y += 0.1f;
                    bullet[i]->velocity = vec2(0.5f, 0.0f);
                    continue;
                }
            }

        }

이렇게 다시 짜봤단말야?

 

근대 이렇게 하니깐 하나밖에 생성이 안되고 그 탄 객체가 조건에 의해서 딜리트되면 그때 다시 생성되더라

 

 

근대 뭐가 잘못됐나? 싶어서 두개 코드 비교해봤는데 차이점을 모르겠음 똑같은 코드 아님???

 

 

19개의 댓글

2019.09.16

총알 배열에 똑같은 총알 정보로 bullet_num개만큼 생성되는거 아님?

그냥 배열이 nullptr이면 무조건 생성하는거 같은데,

하나처럼 보이지만 사실은 bullet_num개의 총알이 겹쳐있을 거 같은데

0
@SoftVanilla

그래서 하나 생성되면 컨티뉴로 빠져나오게 했는데??

0
2019.09.16
@씨발좆같은개새끼

break 쓰려는걸 continue로 착각한거 아님?

continue하면 다시 루프문 처음으로 돌아가잖아

0
@SoftVanilla

맞네시발 ㅋㅋㅋㅋㅋㅋㅋ엌ㅋㅋ break 써도 안되서 왜안되지 했더니 다른 컴파일러에 했던거네 씨발 ㅋㅋ

다시 제대로 해보니간 된다 개빡대가리새끼 ㅋㅋ

0
2019.09.16
@씨발좆같은개새끼

개발환경이 뭔지는 모르겠지만, 디버거를 쓰거나 bullet 생성 쪽에 총알 생성 로그를 찍어보는 식으로 원인 파악이 가능함

0
@SoftVanilla

걍 opengl 만지면서 놀고있음 ㅋㅋ; 디버거 활용을 잘못하겠어서 잘안쓰긴함

0
2019.09.16

Continue땜에 for빠져나와서 1개만 만들어지는거 아님?

0
@Lssss

그럼 다시 스페이스바 누르면 생성되야되는거 아님??

0
2019.09.16
@씨발좆같은개새끼

캄 걍 continue자리에 리턴시키면 안되나

객체 삭제할때 null초기화 잘되있음 될것같은뎅;;

0
2019.09.16

continue 대신 break 써라. 그럼 될거 같은데? 수정전 코드는 배열을 돌며 가장 마지막 빈 슬롯을 찾아서 거기다가 새로운 총알을 넣는 코드고, 수정 후 코드는 배열돌며 빈데다가 줴다 새로운 총알을 하나씩 집어넣는 코드라 한번쏘고 나면, 모든 배열이 같은 위치에 스폰된 총알들로 차 있어서 추가로 발사가 안되는거지. break를 쓰면 가장 처음 만난 빈 슬롯에 총알 하나 만들고 루프 탈출하니 될꺼야.

0
@mrquta

브레이크 쓰니간 스페이스바 누르면 처음 만들어서 나가는 총알 객체가 다시 생성되서 나가는데 ㅋㅋ;;?

0
@씨발좆같은개새끼

ㄴㄴ num을 20으로 고정시켜셔 무조껀 20개는 나가야되는데 1개밖에 안나가고 그게 사라져야지 나가더라

0
2019.09.16
@씨발좆같은개새끼

 

 

if (isKeyPressedAndReleased(GLFW_KEY_SPACE))
        {
            for (int i = 0; i < bullet_num; i++)
            {
                if (bullet[i] == nullptr)
                {
                    bullet[i] = new MyBullet;
                    bullet[i]->center = center;
                    bullet[i]->center.x += 0.2f;
                    bullet[i]->center.y += 0.1f;
                    bullet[i]->velocity = vec2(0.5f, 0.0f);
                    break;
                }
            }
        }

이렇게 한거지?

0
2019.09.16
@씨발좆같은개새끼

그럴리가 있나?? 저기 코드만으론 그럴리가 없는데...?

0
@mrquta

ㅈㅅ 다시 제대로 break써보니간 되더라 다른 컴파일 코드에 해서 안됐었음 씨발 ㅋㅋㅋㅋㅋ ㅈㅅㅈㅅ;;;;

0
2019.09.16
0
@숨참고백스텝

ㅇㅈ 개빡머가리새끼 ㅋㅋ 컨티뉴랑 브레이크랑 해깔려서 몇시간동안 머리 감싸해맴 ㅋㅋㅋㅋㅋ

0
2019.09.16

지금 코드만 보면 한 프레임에 총알이 모두 생성되는게 맞음.

for문 실행은 한 프레임 안에 모두 실행되고, 첫 발사시 현재 사용 가능한 모든 포인터에 총알이 모두 생성되어 똑같은 위치 정보를 가진 총알이 동시에 발사된다 이 말임.

 

continue 용법이 내가 아는거랑 다른거같음.

내가 알기로 continue는 이하의 명령을 실행하지 않고 바로 다음 회차 반복으로 진입하는거거든.

한 번 스페이스 누를 때 마다 하나씩 발사되도록 하러면 윗 댓글 말대로 break를 써서 만들면 될거야.

0
2019.09.16
@가난한미식가

아 댓글 쓰고 보니 이미 이해했나보네

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180585 [모바일] 모바일 크롬 탭창 표정 바뀜 ㅎㄷㄷ 살에눈나와어른의... 0 10 분 전 15
180584 [모바일] 폰 충전기 발열이 넘 심한데 바꿔야 하나 2 우히히힣 0 2 시간 전 51
180583 [컴퓨터] i9 13900k 쓰고있는데 질문! 3 래더넉 0 5 시간 전 95
180582 [컴퓨터] 키보드 -> 방향키가 눌릴때 삐걱거림 2 뮤잉운동케겔운동... 0 7 시간 전 40
180581 [모바일] 기기변경할때 유심을 같은거쓰면 정보 그대로 보존됨? 2 마법부오러사무국장 0 8 시간 전 71
180580 [잡담] 결국 레이니 75 구매함 4 이제는끝내자 0 9 시간 전 161
180579 [컴퓨터] 이륙 허가를 요청한다! 15 와플맛 0 9 시간 전 106
180578 [컴퓨터] 찐따 컴하하 컴퓨터 구매 완료 2 69746974 0 10 시간 전 107
180577 [모바일] a34주문했는데 품절이네 ㅅㅂ 울그락푸르락 0 12 시간 전 118
180576 [컴퓨터] 보통 모니터 스펙이 높을수록 발열이 심해짐? 6 오늘하루도빚갚으리오 0 13 시간 전 134
180575 [컴퓨터] 스마트폰용 SD카드 샀는데 이거 잘 인식 되려나? 4 마두라지 0 13 시간 전 101
180574 [모바일] 갤탭s10 존버중이였는데 그냥 s9 살까 5 한림예고 0 13 시간 전 137
180573 [모바일] 오 플립4 one ui 6.1 업뎃 나왔다 대나무표효자손 0 13 시간 전 115
180572 [모바일] 네이버2차인증알람이 안옴.... 4 까까사주세요 0 16 시간 전 106
180571 [견적] 안녕하세요 선생님들 이 스펙에 4070s 괜찮을까요 14 시비걸면눈물흘림 0 16 시간 전 150
180570 [잡담] 당근에 플스프로4 올려놨더니 구매한다면서 누가 펌웨어 버전... 3 연골어류 0 16 시간 전 196
180569 [프로그래밍] 반도체 장비 업계인 있음? 4 캡틴띠모 0 16 시간 전 156
180568 [컴퓨터] 램 3600짜리 샀는데 제대로 인식을 안한다(해결됨) 10 오이혐오자 0 17 시간 전 122
180567 [잡담] 조공 유)맥북 어플 추천좀 9 년차html개발자 0 17 시간 전 103
180566 [모바일] 쉬이이이벌... 걍 a34 지름 울그락푸르락 0 17 시간 전 84