• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

오른손 법칙 하다가 막혔습니다..

20.08.26 12:18 작성 조회수 172

0

해당부분에서 자꾸 크러쉬나는데

PosX 가 1인상태로 _Dir 값이 2가 될 경우에

if나 else 문으로 빠지지않고 무한적으로 else if문으로 진입하여 결과적으로

PosX = 1 , PosY = 24일때  _board[25 (PosY(24) + frontY[2(1)] ,  1]

으로 배열 사이즈가 넘어가면서 크러쉬가납니다.

왜 이럴까요 ㅠㅠ 맵은 Binary Tree 알고리즘을 사용하여 만들었습니다.

답변 4

·

답변을 작성해보세요.

3

1) Board 벽 막기 관련 (크게 상관 없긴 합니다)

Board.cs Line 55 부근
if (y == Size - 2 && x == Size - 2)  continue;
이 빠져서 외각 벽이 완전히 안 막혔네요!

2) Player 이동 코드에서 매의 눈을 탑재해야 발견할 수 있는 버그

Player.cs Line 43 부근
 if (_board.tile[PosY + rightY[_Dir], PosX + rightX[_Dir]] == Board.TileType.Empty)
PosY이 아닌 posY로 해서 엉뚱한 곳을 서칭하고 있었습니다.

3) 프레임 관련
Program.cs Line 26 부근
int deltaTick = currentTick - lastTick;
둘 순서가 뒤바뀐 문제가 있었습니다.

가끔 스스로의 매의 눈에 감탄하는 경우가 있는데 2번 찾고 뿌듯했습니다.

1

배열 범위를 초과한 인덱스에 접근했다는 것은
범위를 체크하는 Validation 코드에 문제가 있다는 것이니
해당 부분을 먼저 확인해보시기 바랍니다!

대부분 >=와 >을 거꾸로 쓴다거나 하는 미세한 차이에서 실수하는 경우가 많아요.
그래도 못 찾으시겠으면 rookiss@naver.com으로 통으로 압축해서 보내주시기 바랍니다.

0

오오 2번 1시간 넘게 잡고있었는데 못발견한걸 발견해주셨네요 ㅠㅠ  감사합니다!!

정말 강의도 좋고 질문 답변도 빠르고 대박강의네용 @_@

끝 강의까지 잘 부탁드립니다.

0

메일 보내드냈습니다.ㅠ-ㅠ 확인부탁드립니다.