我正在编写一个塔防游戏,并且我正在实现教程中的 A* 寻路算法等等,但是我遇到了一个我无法编写代码的情况!考虑下图。青色节点代表目前发现的最短路径,紫色节点代表已检查节点,深灰色节点代表一堵墙。
根据我对 A* 算法的了解,要计算以下情况的路径,它...
- 从“start”开始并检查上层节点是否可用。这是。它计算其 G 和 H 分数。它对右、下和左节点执行相同的操作。
- 发现右节点的 F 分数最低 (F = G + H)。然后它重复与步骤 #1 相同的方法来查找下一个节点,将“开始”节点标记为父节点。
- 继续这种模式并落在“C 陷阱”中心的节点上,因为该节点迄今为止的 F 分数最低。
- 发现上、右、下、左节点全部闭合。A* 然后将该节点标记为已关闭并重新开始,理解不要理会该节点。
#4 之后会发生什么? A* 会沿着同一条路径重新检查 G 和 H 分数,跳过那个新关闭的节点吗?此外,当使用此 SWF绘制此场景时,表明发现了更多节点来弥补陷阱,如此处建议的那样。为什么?