A*寻路算法

A*寻路算法是一种启发式的路径搜索算法,多用于游戏中的人物移动计算。


算法介绍:

A*寻路算法_第1张图片

由于中间有障碍物阻隔,我们无法从A直接移动到B。所以我们需要试探。

A*算法需要构建两张表:

Open表:用来记录下一步可以移动到的位置。

Close表:用来记录已经移动到的点和当前节点的信息。

判断移动到哪一个位置,需要计算一个和值F:

F=H+G;

H:为预计从下一个节点到最终节点的花费。可以用各种各样的办法估计,取直线距离做估值也可以。越精确的算法带来的效果就越好。

G:为计算从初始节点到当前节点的花费。


过程:

A为起始节点,将A放入Close表中,并将A周围的8个节点放入Open表中,并记录相应的F、H、G值。

在上下左右各个方向,移动一格的花费为10,在左上、右上、左下、右下,移动一格的花费为14。

A*寻路算法_第2张图片

蓝色点为:Close表中的点。

红色点为:Open表中的点。

计算完成后,从Open表中选出F值最小的位置点,放入Close表中,然后加入新的可以移动到的节点,并计算相应的F值。

A*寻路算法_第3张图片

重复以上操作,我们可以看到最后的结果为

A*寻路算法_第4张图片

最后确定唯一的路径,首先从B点出发,按照Close表中的数据,按照箭头方向回溯到A点。

从中可以看出,其本质上为在广度优先搜索的基础上加入了预估计机制的一种试探性路径避障搜索算法。


转载自http://blog.csdn.net/yiyikela/article/details/46134339

你可能感兴趣的:(游戏)