全球旧事资料 分类
方为G值右下方为H值左上方为H值我们拿28号格子为例来讲解一写F值的算法首先因为终点33在4行7列而28在4行2列则行数相差为0列数相差为5总和为5再乘以我们先前定的基数10所以H值为50又因为从28的父结点29移动到28长度为1格而29号为起点,G值为0所以在父亲结点29的基础上移动到28所消耗的G值为0110100为父亲结点的G值1为从29到28的消耗当前OPEN表中的值20283038当前CLOSE表中的值29现在我们开始寻找OPEN列表中F值最低的得出结点30的F值最低且为40然后将结点30从OPEN表中删除然后再加入到CLOSE表中然后在判断结点30周围4个结点因为结点31为障碍结点29存在于CLOSE表中我们将不处理这两点只将21和39号结点加入OPEN表中添加完后地图变为下图样式当前OPEN表中的值2028382139当前CLOSE表中的值2930
U
ity3DCocosphpHTML5JavaiosA
droidCAS3UI设计原画设计动漫美术游戏策划
f学游戏就上我学院woxueyua
com
接着我们重复上面的过程寻找OPEN表中F值为低的值我们发现OPEN表中所有结点的F值都为60我们随即取一个结点这里我们直接取最后添加进OPEN表中的结点这样方便访问因为存在这样的情况所有从一个点到另外一个点的最短路径可能不只一条我们取结点39将他从OPEN表中删除并添加进CLOSE表中然后观察39号结点周围的4个结点因为40号结点为障碍所以我们不管它而30号结点已经存在与OPEN表中了所以我们要比较下假设39号结点为30号结点的父结点30号结点的G值会不会更小如果更小的话我们将30结点的父结点改为39号这里我们以39号结点为父结点得出30号结点的新G值为20而30号结点原来的G值为10并不比原来的小所以我们不对30号进行任何操作同样的对38号结点进行上述操作后我们也不对它进行任何操作接着我们把48号结点添加进OPEN表中添加完后地图变为下图样式当前OPEN表中的值2028382148当前CLOSE表中的值293039
U
ity3DCocosphpHTML5JavaiosA
droidCAS3UI设计原画设计动漫美术游戏策划
f学游戏就上我学院woxueyua
com
以后的过程中我们都重复这样的过程一直到遍历到了最后终点通过遍历父结点编号我们能够得出一条最短路径具体完整的推导过程我就不写出来了因为和刚才那几步是一样的,这里我再讲出一个特例然后基本A星算法就没问题了上面的最后一推导中我们在观察39号结点时发现他周围已经有结点在OPEN表中了我说
好听全球资料 返回顶部