• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

플레이어 이동이 이상한 것에 관한 질문

21.08.06 16:39 작성 조회수 152

0

두번째 while문 parent좌표를 꺼내올때 코드에서의 질문입니다.

while(parent[y, x].Y != y || parent[y,x].X != x)

            {

                _points.Add(new Pos(y, x));

                y = parent[y,x].Y;

                x = parent[y,x].X;

            }

저는 위와 같이 Y와 X에 parent[y,x]에서 바로 Y와 X를 가져와서 대입하는 식으로 코드를 작성하였습니다.

하지만 이 방식으로 코드를 작성하니 문제가 생겼습니다.

위 그림과 같이 플레이어가 모든 코너에서 그러는 것은 아니지만, 중간중간 코너를 지나갈때 코너를 거치지 않고 화살표 방향(대각선)으로 바로 이동하는 문제입니다. (미로는 잘 찾아갑니다)

while(parent[y, x].Y != y || parent[y,x].X != x)

            {

                _points.Add(new Pos(y, x));

                Pos pos = parent[y, x];

                y = pos.Y;

                x = pos.X;

            }

그래서 혹시나 싶어서 선생님이 작성하신대로 위와 같이 변수 pos를 선언후에 parent[y,x]를 저장하여 y와 x에 대입하는 식으로 코드를 변경하였더니 모든 코너를 찍고 지나가며 정상적인 이동을 보여주었습니다.

위 코드와 아래 코드의 차이점이 무엇이고 왜 문제가 발생 하는것인가요? 과정의 차이일 뿐 결과는 같아야 하는것 아닌가요?

답변 2

·

답변을 작성해보세요.

1

y = parent[y,x].Y;

를 하는 순간 y의 값이 바뀌기 때문입니다.

0

상병님의 프로필

상병

질문자

2021.08.06

아 사소한 부분이였는데 놓쳤군요

선생님 빠른답변 감사합니다.