【发布时间】:2012-10-02 05:29:02
【问题描述】:
我正在编写一个塔防游戏,我正在实现教程中的 A* 寻路算法等等,但是我遇到了一个我无法编写代码的情况!考虑下图。青色节点代表目前发现的最短路径,紫色节点代表已检查节点,深灰色节点代表一堵墙。
根据我对A*算法的了解,为下面的情况计算路径,它...
- 从“start”开始并检查上层节点是否可用。这是。它计算其 G 和 H 分数。它对右侧、下部和左侧节点执行相同的操作。
- 发现右节点的 F 分数最低 (F = G + H)。然后它重复与步骤 #1 相同的方法来查找下一个节点,将“开始”节点标记为父节点。
- 继续这种模式并落在“C 陷阱”中心的节点上,因为该节点的 F 分数目前最低。
- 发现上、右、下、左节点都是闭合的。 A* 然后将此节点标记为已关闭并重新开始,理解不要理会此节点。
#4 之后立即发生什么? A* 是否会沿着同一条路径重新检查 G 和 H 分数,跳过那个新关闭的节点?另外,当用this SWF绘制这个场景时,表示发现了更多的节点来弥补陷阱,如suggested here。为什么?
【问题讨论】:
-
你真的想让我点击一个名为
8bitboobs.com的链接吗?好吧,无论如何,它让我发笑。 -
"now what" - 现在算法尝试其他路径,并且正确处理了这种情况。我不明白这里的问题是什么 - 如果您的实现无法正常工作,我们需要查看一些代码来了解原因。
-
算法的下一步是什么?我认为它会从原点重新开始。从那里,它将检查哪些节点?从生成的 SWF 图形来看,它似乎正在检查“两个节点”之外的节点,但我不确定如何以及为什么 :)
标签: path-finding shortest-path a-star