python a星算法_A星算法JavaScript版本

建立一个curr代表当前点初始为null,和currIndex序列号初始为0

let currIndex = 0;

let curr = null;

for(let i = 0; i < openList.length; i++) {

if(openList[i].f < openList[currIndex].f) {

currIndex = i;

}

}

curr = openList[currIndex];

if(curr === endSopt) {

drawPath(curr);

return true;

}

removeFromArray(openList, curr);

closedList.push(curr);

3.遍历curr的neighbors,将合适点的parent设为curr

for(let i = 0; i < curr.neighbors.length; i++) {

let neighbor = curr.neighbors[i];

if(!closedList.includes(neighbor) && !neighbor.wall) {

let tmpF = curr.g + getG(curr, neighbor) + getH(neighbor);

let newPath = false; // 是否是更好的路线

if(openList.includes(neighbor)) {

if(tmpF <= neighbor.f) {

neighbor.f = tmpF;

newPath = true;

}

} else {

neighbor.g = curr.g + getG(curr, neighbor);

neighbor.h = getH(neighbor);

neighbor.f = neighbor.g + neighbor.h;

newPath = true;

openList.push(neighbor);

}

if(newPath) {

neighbor.parent = curr;

}

}

}

4.递归这个函数,当点和终点一致时,返回这个点,然后递归它的parent属性,则能找到路线

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值