使用A*算法必须知道的:
1.F=G+H(寻路算法主要是一步一步在openList中找到最小的F)
H:当前节点行、列于目的地行列差之和 * 10
G:在父节点左右上下位置的G=10,在斜上、斜下、斜左、斜右的G=14
2.openList:用来判断某点到目的地点第一步可能走的选项列表;(存放某点上下左右,斜上斜下斜左斜右点 ,注意:如果可选项为障碍、怪物、比自己大的其他玩家,则不能加入openList中)每个点都有一个openList
closeList:用来存放可走的最优路径
parent:父节点
3.A*寻路思想
(1)起点插入openList中
(2)在openList中查找F最小的node节点
(3)从openList中移除F最小的node,并把它加入到closeList(即,找到该点下步要走的点)
(4)node是否是终点
(5)查找node周围点:目的为了找node的openList,找到可走的点加入到openList中(从步骤2继续寻找)
4.核心代码实现:
判断周围的点要不要加在openList里
def searchNear(minF, offsetRow, offsetCol, endPoint):
# 处理数据+21后再对移动位置取余 重新计算offsetCol、offsetCol
rowTemp = (minF.row + offserRow + 21)%21
colTemp = (minF.col