以下是我们实现 A* 算法的方式:
将开始点放入开放列表(open list)中
当开放列表不为空时我们重复执行以下操作:
从开放列表中取出 F 值最小的节点并将他放入关闭列表中(我们后续不会再考虑关闭列表中的节点...算法流程
暂略(译注:原文在这里通过示例描述了 JPS 算法在 水平方向 与 对角方向 搜索节点的流程,但是描述的比较简略,也存在一些错误,在此暂时省略翻译,有兴趣的朋友可以阅读这篇文章来了解 JPS...通过这个节点数组,我们就可以通过网格的位置(索引)直接访问节点数据,这对于节点遍历非常有用.一旦我们有了节点数据,我们就可以执行 A* 算法了,我们要做的第一步就是在该数组中填充原始节点,我们使用的填充函数是...如果你不知道上述代码里模板参数中的 compare 是什么,你可以简单理解是一种定义了如何比较节点的简单数据结构.
?...我们将当前节点的分值设置为最低,并且将其 on_close 变量设置为 true,正常来说,我们应该将节点放置于关闭列表中,但是设置节点变量数据是效率更高的一种方式.OK,现在是时候扩展相邻节点了,扩展之前我们需要检查相邻节点是否已经处于关闭列表中