A* 寻路算法原理解析(支持斜走开关)

因为最近刚换了工作
平时比较闲
决定写一些教程分享给大家

首先A* 寻路算法
核心就是f(n) = g(n) + h(n)


我们要做的就是不断拿出F值最小的格子并计算他周围格子的F值 直到找到终点
为了避免寻重复的格子 所以我们需要两个列表 open 和 close
open列表 用来保存 每移动一步周围的格子 并按F值排序
close用来保存已经走过最小f值的格子
注意 搜寻周围格子的时候一定要忽略已经存在close列表已经存在的

添加周围格子核心代码(需要斜走 把 相应格子添加上就可以)

每走一步我们需要重把周围格子的 父 格子赋成当前格子 并 重新计算F G H
如果 此格子不存在open列表内 需要加入open列表

到这里我们只需要 一直重复执行此动作 直到找到终点

找到终点后 拿最后一步的父节点 逆推出 最短路径

自此 寻路结束 附上 效果图 及 代码一份
findPath.rar (1.8 KB)

5赞

先顶 在看 赞

先mark住

mark

你的A*省内存,但是慢

mark

:2:

A*可以双向同时进行么

临时写的, 没有来得及做优化

mark,赞:heart_eyes:

mark

mark

mark