gpt4 book ai didi

JavaScript - for 循环抛出 undefined variable 。 (SSCCE 提供)

转载 作者:行者123 更新时间:2023-12-02 19:40:22 26 4
gpt4 key购买 nike

我在简单的 JavaScript 中使用 A* 寻路脚本。我将游戏分解为 SSCCE。无论如何,我的游戏是横向 15 列,向下 10 行。

在您单击最右边 5 列上的任意位置之前,寻路功能将一直有效。因此,如果 X11 或更大。你会得到这个错误。 未捕获类型错误:无法读取未定义的属性“7” 其中 7 是您单击位置的 Y 轴。

这是我的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 - 10 Tiles (Y)
// LEFT to RIGHT - 15 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 - y (15 columns across, 10 rows down)
end = graph.nodes[12][7]; // x - y (15 columns across, 10 rows down)
result = astar.search(graph.nodes, start, end);
});
</script>
</head>
<body>
Loading... pathfinding. Look in Chrome Console/Firefox Firebug for more information.
</body>
</html>

如您所见,我的游戏是 jQuery。还有graphstar.jsastar.js。不用担心 astar.js,因为它工作得很好。 graphstar.js 是我的问题所在。 astar.js 是放置节点 等的地方。 graphstar.js 是绘制 map 的位置。

在此处查看整个 graphstar.js:http://pastebin.com/kx4mw86z (这里是astar.js:http://pastebin.com/wtN2iF15)

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

// Creates a Graph class used in the astar search algorithm.
function Graph(grid) {
var nodes = [];

var row, rowLength, len = grid.length;

for (x = 0; x <= 10; x++) {
row = grid[x];
nodes[x] = new Array(15);
for (y = 0; y <= 15; y++) {
nodes[x][y] = new GraphNode(x, y, row[y]);
}
}

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

我知道我的 X 的最高值是 15 而我的 Y 的最高值是 10。但我尝试搞乱它..我会得到错误。有时没有错误,页面就会卡住。

帮忙?

新的图形格式:

for (y = 0; y <= 10; y++) {

row = grid[y];
nodes[y] = new Array(15);

for (x = 0; x <= 15; x++) {

console.log("X: " + x + " Y: " + y);
//console.log("Row: " + row[x]);
nodes[x][y] = new GraphNode(x, y, row[x]);
}
}

最佳答案

如果我对这一切的理解正确的话,我认为你的索引只是倒退了。

graph.nodes[12][7]

graph.nodes[12] 未定义,因为 nodes 中只有 11 个元素:

for (x = 0; x <= 10; x++) {

nodes[x] = new Array(15); // x only goes up to 10

编辑:

这条评论说明了一切:

// UP to DOWN - 10 Tiles (Y)
// LEFT to RIGHT - 15 Tiles (X)

这是倒退的。你没有 15 x 和 10 y,你有 10 x 和 15 y。

关于JavaScript - for 循环抛出 undefined variable 。 (SSCCE 提供),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458532/

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