特别简洁的游戏A*B*寻路算法过程介绍

1.寻路算法

相关的博客介绍 A算法B算法寻路预览

1.1 A*算法

1.1.1相关定义
  • open list:记录下所有被考虑来寻找最短路径的方块,相当一个检测列表
  • closed list:记录下不会再被考虑的方块,方块已经被记录是已经检测的结果
  • G数值:开始点到当前方块的移动量((x当前 - x起点) + (y当前 - y起点))
  • H数值:当前方块到终点的移动量((x终点 - x当前) + (y终点 - y当前))
  • F数值:和值 F = G + H,在寻路过程中,计算每个方块的和值以和值最小的格子确定下一个遍历的点
1.1.2算法过程

1.把起点加入 open list 。
2.检查起点相邻的所有方格,把可以走的方格加入到open list中
2.重复如下过程:

  • 遍历 open list ,查找 F 值最小的节点,把它作为当前要处理的节点。
  • 把这个节点移到 close list 。
  • 对当前方格的 8 个相邻方格的每一个方格判断:
    • 如果它是不可抵达的或者它在 close list 中,忽略它。
    • 如果它不在 open list 中,把它加入 open list ,并且把当前方格设置为它的父亲,记录该方格的 F , G 和 H 值。
    • 如果它已经在 open list 中,检查这条路径 ( 即经由当前方格到达它那里 ) 是否更好,用 G 值作参考。更小的 G 值表示这是更好的路径。如果是这样,把它的父亲设置为当前方格,并重新计算它的 G 和 F 值。如果你的 open list 是按 F 值排序的话,改变后你可能需要重新排序。

4.检测结束

  • 把终点加入到了 open list 中,此时路径已经找到了
  • 查找终点失败,并且 open list 是空的,此时没有路径。
    保存路径。从终点开始,每个方格沿着父节点移动直至起点,这就是寻路路径。

2.1 B*算法

2.1.1 相关定义
  • 探索节点:寻路过程中向前探索的节点(地图格子)
  • 原点:起始探索节点
  • 自由探索节点 :探索节点朝着目标前进,如果前方不是阻挡,探索节点可以继续向前进入下一个地图格子
  • 绕爬探索节点:探索节点朝着目标前进,如果前方是阻挡,探索节点将试图绕过阻挡
2.1.2 算法过程

1、起始,探索节点为自由节点,从原点出发,向目标前进;
2、自由节点前进过程中判断前面是否为障碍,

  • 不是障碍,向目标前进一步,仍为自由节点;
  • 是障碍,以前方障碍为界,分出左右两个分支,分别试图绕过障碍,这两个分支节点即成为两个绕爬的探索节点;

3、绕爬的探索节点绕过障碍后,又成为自由节点,回到2);
4、探索节点前进后,判断当前地图格子是否为目标格子,如果是则寻路成功,根据寻路过程构造完整路径;
5、寻路过程中,如果探索节点没有了,则寻路结束,表明没有目标格子不可达;

写的太简单啦~以后再补充

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值