gpt4 book ai didi

JavaScript - for 在 x 轴和 y 轴上循环

转载 作者:可可西里 更新时间:2023-11-01 14:55:23 25 4
gpt4 key购买 nike

我正在使用 A* pathfinding script在一个简单的 JavaScript 2D( Canvas )游戏中。我将游戏分解为 SSCCE .不管怎样,我的游戏横跨 15 列,向下 10 行。

有什么问题?设置图,节点只设置了11次横跨和10次上下。 X 轴应该达到 15,而它似乎只设置为 grid.length,即 11。好的,所以这是我的问题。我的 gridSSCCE 中包含的返回 array

这是我的 SSCCE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type='text/javascript' src='graphstar.js'></script>
<script type="text/javascript">
var board;
</script>
<script type='text/javascript' src='astar.js'></script>
<script type="text/javascript">
$(document).ready(function()
{
// UP to DOWN - 11 Tiles (Y)
// LEFT to RIGHT - 16 Tiles (X)
graph = new Graph([
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1],
[1, 13, 1, 13, 13, 13, 13, 13, 1, 1, 1, 1, 1, 13, 13, 1],
[1, 13, 1, 1, 13, 1, 1, 13, 1, 13, 13, 1, 13, 13, 13, 1],
[1, 13, 13, 1, 1, 1, 13, 13, 1, 13, 13, 1, 1, 1, 13, 1],
[1, 13, 13, 1, 13, 1, 13, 13, 13, 13, 13, 1, 13, 13, 13, 1],
[1, 13, 13, 13, 13, 1, 13, 13, 13, 13, 13, 1, 13, 13, 13, 1],
[1, 13, 1, 13, 13, 13, 13, 13, 1, 1, 1, 1, 13, 13, 13, 1],
[1, 13, 1, 1, 1, 1, 13, 13, 13, 13, 1, 13, 13, 13, 13, 1],
[1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]);
//Let's do an example test.
start = graph.nodes[1][2]; // X: 1, Y: 2
end = graph.nodes[12][7]; // X: 12, Y: 7
result = astar.search(graph.nodes, start, end);
});
</script>
</head>
<body>
Loading... pathfinding. Look in Chrome Console/Firefox Firebug for more information.
</body>
</html>

如您所见,我的网格 上下有11 行,横跨16 列。然而,我的 graph 并没有那样解释它。

在此处查看整个 graphstar.js:http://pastebin.com/KfS9ALFq (这里是完整包的astar.js:http://pastebin.com/8WyWnTpQ)

这是它在 graphstar.js 中的布局:

function Graph(grid) {
var nodes = [];

var row, rowLength, len = grid.length;
console.log("Length:" + len);
for (var x = 0; x < len; ++x) {
row = grid[x];
rowLength = row.length;
nodes[x] = new Array(rowLength);
for (var y = 0; y < rowLength; ++y) {
nodes[x][y] = new GraphNode(x, y, row[y]);
}
}

this.input = grid;
this.nodes = nodes;
}

如您所见,for 循环仅转到 grid.length (len),即 11 因为它是 11 行。但是那是 X 轴。我的 X 轴 map 跨越 15 列,Y 轴向下 16 行。

现在你说......你为什么不改变轴的方向?我试过了。比如,XY 被切换。但我得到的只是 Uncaught TypeError: Cannot set property '0' of undefined in line 24 这是 nodes[x][y] = new GraphNode(x , y, 行[y]);

我怎样才能使图形相应地设置为 X 的最高轴是 15Y 的最高轴是 10 吗?

最佳答案

编辑:误解了您的意思。

看来您只需要更改使用 for 循环进行迭代的方式,这样您就可以向下并穿过它,向下并穿过它

var row, rowLength, len = grid.length;
for(y = 0; y == len - 1; ++y) {
row = grid[x];
rowLength = row.length; // Expected: 16;
nodes[y] = new Array(len);
for (var x = 0; x == rowlength - 1; ++x){

//figure out your nodes[y][x] here;
}
}

关于JavaScript - for 在 x 轴和 y 轴上循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10467902/

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