작성
·
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에 대입하는 식으로 코드를 변경하였더니 모든 코너를 찍고 지나가며 정상적인 이동을 보여주었습니다.
위 코드와 아래 코드의 차이점이 무엇이고 왜 문제가 발생 하는것인가요? 과정의 차이일 뿐 결과는 같아야 하는것 아닌가요?