- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在我的游戏(使用 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。这是一个屏幕截图:
(粉色方 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,当我用鼠标单击时,播放器的路径闪烁并消失)
也许有人知道如何解决这个问题?
我为我糟糕的英语语言感到非常非常抱歉。 :)
最佳答案
这是我目前使用的,基于我的 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/
我正在尝试提供即时转码的视频。不幸的是,这意味着寻求不起作用。我假设这是因为浏览器不知道视频有多长,因此无法正确显示搜索栏。 有谁知道是否可以对视频的时长进行硬编码? 我想到的另一个选择可能是创建我自
我是一名优秀的程序员,十分优秀!