0

所以,我正在与A* Pathfinding. 我得到了它的工作,但它并没有一路工作。它一直有效,直到4右边的最后一列。奇怪的。

它一直有效,直到 X 小于或等于 10。这很奇怪,因为Y' 的最大值是10。也许是在一起了?我不知道。但我的地图是15 columns10 rows. 这是一个在线示例: http: //mystikrpg.com/html5/

我得到的一个有趣的错误是Uncaught TypeError: Cannot read property '8' of undefined.

8Y您单击的位置。如果您单击右侧的第一个灰色块(因为第 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;
}

但是,你可以离线下载它并把它放在本地主机上,如果你喜欢这里http://mystikrpg.com/html5/Ethios.rar

无论如何......我发现的其他东西:

我的函数返回一个元素loadMap()数组。11

例如,当x_block13(单击X地图轴)时,graph.nodes[x_block][y_block]返回未定义。

这是我的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]);
    }
}
4

1 回答 1

1

你有你的xy命名错误的方式。

x轴应该是表格中的第二维度,例如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]); 
    }
}
于 2012-05-04T17:33:48.390 回答