a*寻路算法伪代码及实现

伪代码

设置一个待检测列表openList和一个不需检测列表closeList

把起始点startPoint推入openList;

然后检测openList

如果不为空就找出其中F值最小的一个 

将此节点做为当前节点(curNode),并且加入closeList中不再检测;

然后看看这个当前节点是不是我们要找的?

如果不是:

    遍历curNode周围的节点(矩阵网格的话,周围是8格,左,上,右,下,左上,右上,右下,左下)?

    如果是不可通过的、或者是在closeList中的、或者超过边界的都continue掉

    保存parent、F值到curNode上以便后续通过parent溯源,再保存在openList中

如果是:

    说明找到了(如果找到了就通过这个节点上保存的父节点层层查询,最终找到起始点,完成整条路径)

如果为空列表:

说明检测完了,但是没有找到目的地。

补充说明:

F值的计算公式:G(当前点和父节点的距离)+H(当前点和目的点的距离)))

G的值,如果是对角线的块按1.4倍长度来算

为了方便理解,我使用曼哈顿距离作为H的计算方式(横纵距离相加)

demo我放在gitee上,有兴趣的可以看一下,其实伪代码足以 

https://gitee.com/tang_c/my-shader-demo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值