프로그래밍

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
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180373 [잡담] 개꿀 당근에서 만원짜리 컴 득템 2 플게이어 1 3 시간 전 200
180372 [컴퓨터] 중고로 키크론 k3 pro? 라는 키보드를 구해왔는데 6 3th3 0 3 시간 전 105
180371 [견적] 이거 에센코어 KLEVV DDR4 PC4-25600 CL22 매우 싸게 나왔는... 11 부터시작하는이세... 0 8 시간 전 141
180370 [잡담] 모니터암 설치하는데 미스테리 3 사나이테스트 0 9 시간 전 224
180369 [컴퓨터] 음향 관련 잘아는 형들 질문... 3 Marlin 0 9 시간 전 101
180368 [잡담] 애드가드 안드로이드 kt-dpi 우회 업데이트 됨 어무니 0 10 시간 전 138
180367 [컴퓨터] m2 ssd를 메인보드 기준으로 슬롯 1번에 있는거 2번으로 옮기... 3 오뜨 0 10 시간 전 100
180366 [잡담] 유튜브앱 구간 스킵 방식이 바꼈네?? 2 츄이로 0 11 시간 전 143
180365 [컴퓨터] 이륙 허가좀 17 사촌간부랄빨기 0 11 시간 전 140
180364 [컴퓨터] 완전 컴알못인데 이 레노버 노트북 사도 될까? 10 Fiesta 0 12 시간 전 146
180363 [잡담] 천천히 충전하는 거 폰 배터리에 더 안 좋음? 6 개돼지무한리필 0 12 시간 전 123
180362 [잡담] 메타ai 공개 2 년차html개발자 1 12 시간 전 127
180361 [컴퓨터] p41을 서브 게임저장용은 낭비인가? 7 신우철 0 14 시간 전 144
180360 [정보] 해당 모니터암이 여기 모니터2개에 맞을지 모르겠습니다 2 골든베릴 0 16 시간 전 116
180359 [견적] (직구) SK하이닉스 Platinum P41 2TB PCIe4.0 NVMe M.2 2280 ... 7 요기쪄 0 17 시간 전 300
180358 [컴퓨터] 이거 괜찮은 가격인가요? 5 죽업 0 18 시간 전 187
180357 [잡담] 급해서 특급운송으로 주문했는데... 오브 0 18 시간 전 145
180356 [컴퓨터] 사도 됨? 8 or5469 0 21 시간 전 179
180355 [모바일] 에어팟 프로 1세대 노이즈 캔슬링시 들리는 잡음 해결 방법 5 기승전치킨 0 23 시간 전 160
180354 [컴퓨터] RX7600 생각보다 잘만들었네? 7 Vv연옥의사신vV 0 1 일 전 268