AStar 寻路算法

寻路步骤

  1. 从起点A开始,把它作为待处理的放个存入一个“开启列表”,开启列表就是一个等待检查放个的列表.
  2. 寻找起点A周围可以到达的方格,将它们放入”开启列表“,并设置它们的”父放个“为A
  3. 从”开始列表“中删除起点A,并将起点A加入”关闭列表“,”关闭列表“中存放的都是不需要再次检查的放个
  4. 开启列表:等待检查的列表
  5. 关闭列表:存放的都是不需要再次检查的方格

图中浅绿色描边的方块表示已经加入”开启列表”等待检查。淡蓝色描边的起点A表示已经放入“关闭列表”,它不需要在执行检查。

从“开启列表”中找出相对最靠谱的方块,什么是最靠谱?

他们通过公式 F = G + H 来计算

G 表示从起点 A 移动到网格上指定方格的移动耗费(可沿斜方向移动)

H 表示从指定的方格移动到终点 B 的预计耗费 (H 有很多计算方法, 这里我们设定只可以上下左右移动)

把他从“开启列表”中删除,并放到“关闭列表”中

检查它所有相邻并且可以到达(障碍物和“关闭列表”的方格都不考虑)的方格。如果这些方格还不在“开启列表”里话,讲他们加入“开启列表”,计算这些方格G,H和F值各是多少,并设置它们的“父方格”为C

如果某个相邻方格D已经在“开启列表”里了,检查如果用新的路径(就是经过C的路径)到达它的话,G值是否会更低一些,如果新的G值更低,那就把它的“父方格”改为目前选中的方格C,然后重新起算它的F值和G值(H值不需要重新计算,因为对于每个方块,H值是不变的)如果新的G值比较高,就说明经过C再到达D不是一个明智的选择,因为它需要更远的路,这时

上一篇
下一篇