JavaScript / jQuery - 数组列表不适用于整板

时间:2012-05-04 17:31:23

标签: javascript jquery html5

所以,我正在使用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_block13(点击地图的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]);
    }
}

1 个答案:

答案 0 :(得分:1)

您的xy命名方法错误。

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]); 
    }
}