인프런 커뮤니티 질문&답변

상병님의 프로필 이미지
상병

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

BFS를 이용한 길찾기 구현

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

작성

·

215

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

Rookiss님의 프로필 이미지
Rookiss
지식공유자

y = parent[y,x].Y;

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

0

상병님의 프로필 이미지
상병
질문자

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

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

상병님의 프로필 이미지
상병

작성한 질문수

질문하기