游戏寻路——A*算法

本文详细介绍了A*寻路算法的基本思想和实现过程,包括算法的核心公式f(n) = g(n) + h(n),以及算法的步骤,如开启列表、关闭列表的管理和节点的评估。通过具体的代码实现展示了如何在游戏场景中应用A*进行路径规划。
摘要由CSDN通过智能技术生成

A*其实是一种思想,采用启发式遍历来得到起始点到目标点的路径。

A*的基本思想:f(n) = g(n) + h(n);

其中,g(n)是从起始点到当前点V的实际代价,h(n)表示当前点V到目标点的代价估计,一般用两点间x,y坐标差的平方和表示。

则f(n)值就表示该点的估价值了,f值越低表示该点越优。

最佳路径就是一系列最优节点的集合。

 

算法描述:

1.把起始点加入到开启列表,开启列表表示将要搜索的点的集合。

2.重复如下的工作:

a.寻找开启列表中F值最低的点,我们把它称为当前点V。

b.把它添加到关闭列表,并把它从开启列表删除。

c.对它周围相邻的8个点:

*如果它在关闭列表或者不可通过,略过它

*如果它既不在开启列表,也不在关闭列表,则把它添加进开启列表,并把当前点V作为其父节点,记录改点的F,G,H值。

*如果其已经在开启列表,则比较该点新的G值和其旧的G值,如果新的G值要小,则更新该点的父节点为节点V,从新计算F,G,H值。(以上往开启列表添加节点或是更新节点的数据都要从新对开启列表排序)

d.停止

*如果把目标点添加进了关闭列表,这时候路径找到

  或者*没有找到目标点,但是开启列表已经空了,这时候表示路径不存在。

3.保存路径。从目标点开始找其父节点,直到移动到起始点。这就是路径。

 

具体代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值