所以,我正在使用A* Pathfinding
。我得到了它,但它不能一直工作。它一直有效,直到右边的最后4
列。奇怪的。
它一直有效,直到X为10或更小。这很奇怪,因为Y
的最大值是10
。也许它在一起?我不知道。但是我的地图是15 columns
10 rows
。以下是一个在线示例:http://mystikrpg.com/html5/
我得到的一个有趣错误是Uncaught TypeError: Cannot read property '8' of undefined
。
8
是您点击的Y
。如果单击右侧的第一个灰色块(因为第0行被关闭)。然后,8
会说1
。
这是它放置节点的部分。
// 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;
}
但是,如果您愿意,可以离线下载并将其放在localhost上http://mystikrpg.com/html5/Ethios.rar
无论如何...我找到的其他东西:
我的loadMap()
函数返回一个11
元素数组。
例如,当x_block
为13
(点击地图的X
轴)时,graph.nodes[x_block][y_block]
将返回undefined。
这是我的loadMap()
功能:
function loadMap(map) {
if (map == 1) {
return [[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]];
}
}
正如您所看到的,它是15列和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]);
}
}
答案 0 :(得分:1)
您的x
和y
命名方法错误。
x
轴应该是表格中的 second 维度,例如nodes[y][x]
:
for (y = 0; y <= 10; x++) {
row = grid[y];
nodes[y] = [];
for (x = 0; x <= 15; x++) {
nodes[y][x] = new GraphNode(x, y, row[y]);
}
}