A星算法简介Javascript实现了A星寻路算法。在游戏中,经常需要主角/敌人移动到某个物品或者追击敌人。这时候就可以使用寻路算法了。为了实现canvas游戏,需要一个寻路算法,所以我用JS实现了简化搜索区域的原理和思路:为了减少资源消耗,我们首先需要将地图进行分块,如图下图2。建立起点和终点的坐标,用于寻路和维护打开和关闭列表。我们创建两个A列表,一个opentable,里面记录了所有考虑的寻路点;一个closetable,里面记录了所有不再考虑的点嗯,首先我们引入G的三个值,即从当前点到起点需要的成本H值,不考虑所有障碍物和其他元素,以非斜线的方式估计该点到终点的量,即x+y的值F,即该点G+H的值,如图如图,左上角是F,右上角是H,左下角是G:接下来就是求路径了。首先将F值最小的点加入open,并点击Temporarilyrecordasthecurrpoint,去掉open中的curr点,在curr的相邻点上加上close,close或者obstacle有以下步骤,没有不管它不在open中,然后计算它的各种值,在open中加上open,然后计算我们当前路径是否到达这个F值较小的点,如果是,则更新它的F值,当当前路径结束寻路点和终点检测一致;如果open为空,说明没有合适的寻路Path方案,具体寻路失败的JS实现方案首先创建一个Sopt类,包含如下信息属性:x,y,f,g,h,isWall,neighbors,parents,方法addNeighbors,用于添加周围8个可以添加到网格中的点初始化地图上的所有点,运行addNeighbors方法,初始化neighbors数组,建立寻路过程,初始化位置,终点,将起点添加到openlist,并创建一个递归函数来查找路径。寻路递归函数首先判断openlist的长度是否为0,如果寻路失败,创建一个curr表示当前点初始为null,currIndex的序号初始为0letcurrIndex=0;让curr=null;for(leti=0;i
