gpt4 book ai didi

javascript - A* 在 HTML5 Canvas 中开始寻路

转载 作者:太空狗 更新时间:2023-10-29 15:57:31 25 4
gpt4 key购买 nike

我正在尝试在我的游戏(使用 JavaScript、HTML5 Canvas 编写)中实现 A* Start 路径查找。 A* Start 的库找到了这个 - http://46dogs.blogspot.com/2009/10/star-pathroute-finding-javascript-code.html现在我正在使用这个库来寻找路径。对于这个库,我正在尝试编写一个简单的测试,但遇到了一个问题。我现在完成了在 HTML5 Canvas 屏幕中单击鼠标显示路径直到我的 mouse.x 和 mouse.y。这是一个屏幕截图:

Screenshot.

(粉色方 block :玩家,橙色方 block :直到我的 mouse.x/mouse.y 的路径)编码我如何绘制橙色方 block 直到我的 mouse.x/mouse.y 是:

for(var i = 0; i < path.length; i++) {
context.fillStyle = 'orange';
context.fillRect(path[i].x * 16, path[i].y * 16, 16, 16);
}

我的问题是我不明白如何移动我的玩家直到路径目标。我试过:

for(var i = 0; i < path.length; i++) {
player.x += path[i].x;
player.y += path[i].y;
}

但是使用这段代码,我的播放器没有被绘制。(当我运行代码时,player.x 和 player.y 等于 0,当我用鼠标单击时,播放器的路径闪烁并消失)

也许有人知道如何解决这个问题?

我为我糟糕的英语语言感到非常非常抱歉。 :)

最佳答案

My Working Fiddle

这是我目前使用的,基于我的 a*。这个概念应该是一样的。 a* 函数应该以数组形式返回路径,然后您只需要在每个玩家更新时遍历路径并移动它们。

// data holds the array of points returned by the a* alg, step is the current point you're on.
function movePlayer(data, step){
step++;
if(step >= data.length){
return false;
}

// set the player to the next point in the data array
playerObj.x = data[step].x;
playerObj.y = data[step].y;

// fill the rect that the player is on
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect(playerObj.x*tileSize, playerObj.y*tileSize, tileSize, tileSize);

// do it again
setTimeout(function(){movePlayer(data,step)},10);
}​

关于javascript - A* 在 HTML5 Canvas 中开始寻路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com