xとyのループに対して軸。私はSSCCEに私のゲームを壊した。とにかく、私のゲームは縦15列、下10行です。JavaScriptは - 私は、簡単なJavaScriptの2D(キャンバス)ゲーム内<a href="http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript-updated" rel="nofollow">A* pathfinding script</a>を使用してい
問題が何ですか?グラフを設定すると、ノードは横方向に11回、上下に10回しか設定されません。明らかにそれがgrid.length
、それは11
であることを設定するときX
軸は15
までであるべきです。 OK、それで私の問題があります。私のgrid
は、SSCCE
に含まれる返品array
です。
ここは私の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 - 11 Tiles (Y)
// LEFT to RIGHT - 16 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: 1, Y: 2
end = graph.nodes[12][7]; // X: 12, Y: 7
result = astar.search(graph.nodes, start, end);
});
</script>
</head>
<body>
Loading... pathfinding. Look in Chrome Console/Firefox Firebug for more information.
</body>
</html>
あなたが見ることができるように、私のgrid
は上下11
行と列にわたって16
です。しかし私のはそれをそのように解釈しません。
は、ここに全体graphstar.js
を参照してください:http://pastebin.com/KfS9ALFq(ここでは、完全なパッケージのastar.js
です:http://pastebin.com/8WyWnTpQ)
それはgraphstar.js
にレイアウトされています場所です:
function Graph(grid) {
var nodes = [];
var row, rowLength, len = grid.length;
console.log("Length:" + len);
for (var x = 0; x < len; ++x) {
row = grid[x];
rowLength = row.length;
nodes[x] = new Array(rowLength);
for (var y = 0; y < rowLength; ++y) {
nodes[x][y] = new GraphNode(x, y, row[y]);
}
}
this.input = grid;
this.nodes = nodes;
}
あなたが見ることができるように、唯一のfor
ループ11
ローであるため11
であるgrid.length
(len
)に行きます。しかし、それはX
軸です。 X
軸のマップは15
列になり、Y
軸は16
行下になります。
は今、あなたが言う... は、なぜあなたは軸の周りを切り替えないのですか?私はそれを試みました。同様に、X
とY
が切り替わります。しかし、私が得るすべてはnodes[x][y] = new GraphNode(x, y, row[y]);
あるline 24
でUncaught TypeError: Cannot set property '0' of undefined
どのように私はX
の最高軸が15
あるとY
の最高軸が10
あると、それはそうグラフが適切に設定されていることを確認することができますか?
ダウン私は、次を取得し、あなたがダウンして1およびそれを越えつもりだように、あなたがforループで繰り返し処理している方法を変更する必要があるように思えこれを実行するエラー。 'Uncaught TypeError:未定義の' 8 'プロパティを読み取ることができません。 '8'は、' Y'軸をクリックした場所の番号です。 – nn2