0

だから、私は一緒に働いてい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;
}

ただし、必要に応じて、オフラインでダウンロードしてローカルホストに配置できますhttp://mystikrpg.com/html5/Ethios.rar

とにかく...私が見つけた何か:

私の関数は要素loadMap()の配列を返します。11

たとえば、(マップの軸をクリックすると) の場合x_blockはundefined が返されます。13Xgraph.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 行あります。

私は何を間違っていますか?

更新 NEW

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軸はテーブルの 2 番目のディメンションにする必要があります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 に答える