私は単純なJavaScriptの2D(キャンバス)ゲームでA* pathfinding scriptを使用しています。私はSSCCEに私のゲームを壊した。とにかく、私のゲームは縦15列、下10行です。JavaScript - 未知の型エラー:未定義のプロパティ '0'を設定できません
問題は私が得るエラーです。以下では、ノード間のパスを開始および終了する方法があります。エラーメッセージUncaught TypeError: Cannot set property '0' of undefined
がline 15
にあります。第15行目は、第2のfor
ループの間にnodes[x][y] = new GraphNode(x, y, row[x]);
です。
ここは私の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 - 10 Tiles (Y)
// LEFT to RIGHT - 15 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>
ご覧のとおり、私のゲームはjQuery
です。また、graphstar.js
とastar.js
があります。 astar.js
が問題なく動作するので、心配しないでください。 graphstar.js
は私の問題がどこにあるかです。 astar.js
は、nodes
などが配置されている場所です。 graphstar.js
は、地図がグラフ化されている場所です。それはgraphstar.js
にレイアウトされています場所です
:
function Graph(grid) {
var nodes = [];
var row, rowLength, len = grid.length;
for (y = 0; y <= 15; y++) {
row = grid[y];
nodes[y] = new Array(15);
for (x = 0; x <= 10; x++) {
nodes[x][y] = new GraphNode(x, y, row[x]);
}
}
this.input = grid;
this.nodes = nodes;
}
だから、あなたが見ることができるように... Y
が使用できます(http://pastebin.com/ee6PMzc3ここastar.js
です)http://pastebin.com/5AYRreip:
graphstar.js
を参照してください。
10
以下。
X
は、
15
以下にすることができます。しかし、私はこのエラーが発生しています。
それは
X
と
Y
境界内にあるので、私は
end = graph.nodes[12][7]; // X: 12, Y: 7
を入力していては動作するはずです
...しかし私も最初の場所でそれを設定する問題を抱えています。
なぜそれが定義されていませんか?あなたが混ざっあなたの軸を取得している
UPDATE 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]);
}
}
です。私の問題は、「Y」の15列と「X」の10列のインデックスを作成しようとすると...そのエラーが発生します。 – nn2
@weka:うれしいこと、喜んで助けてくれました。 –
はい、問題があります。まだそれを修正しようとしています。 – nn2