使用 字典(或者说优先级队列) 或者 堆 来替代 列表 也可以加速 A* 算法.在这些数据结构中遍历元素非常之快,这会非常有助于你在其中搜索某一节点,同样的,在有序字典或者最小堆中,我们也能很方便的找到具有最低...分帧寻路.如果你的游戏并不需要在一帧中就获取完整的寻路结果,那么我们就可以使用分帧寻路来优化 A* 算法.我们可以设置一个循环上限,如果 A* 算法在该循环限制内没能完成寻路,我们便暂停当前寻路,并在下一帧继续...,之后你就可以分帧来搜寻这些(部分)节点之间的路径,与上述的分帧寻路不同的是,你不用限制循环上限,而是一帧一帧的来寻找(部分)节点之间的路径....代码写到这里,我们就已经准备好进行 while 循环了,我们会使用节点指针来进行循环操作并检查这些节点指针是否已经在开放列表或者关闭列表中.
?...CalculateFopt 是一个用来计算节点 G 值 和 H 值 的函数,方法上主要是检查了节点间是对角距离还是水平(或垂直)距离.我们需要做的最后一件事是,当我们搜索到目标点后,如何回溯节点直到返回开始点