• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

A* 구현에서

21.05.18 22:46 작성 조회수 83

0

마지막 강의 6분 50초 쯤 부터 보시면

 if (open[nextY, nextX] < G + H)

       continue;

라는 코드를 짜셨는데,

여기서 open[nextY, nextX]는 (nextY, nextX)좌표의 이미 찾은 F값이고,

G + H 는 방금 새로 구한 F 값이라고 하셨는데요

if (closed[nextY, nextX])

      continue;

위 코드로 이미 F값을 한 번 구했던 노드로 가는 건 스킵을 했는데

어떻게 이전에 구했던 F값과 새로 구한 F값을 비교할 수 있는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요,
비슷한 질문이 이전에 올라와서, 링크로 대체 드립니다.
closed까지 갔으면 진짜 방문이 끝난 것이지만,
open은 그냥 '예약'만 한 상태이고
실제로 방문하기 직전에 다른 후보를 찾을 수도 있습니다.

https://www.inflearn.com/questions/100852

우도군님의 프로필

우도군

질문자

2021.05.19

저 그림을 보니깐 이해가 됐네요. 감사합니다.