2012-05-06 24 views
3

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.lengthlen)に行きます。しかし、それはX軸です。 X軸のマップは15列になり、Y軸は16行下になります。

は今、あなたが言う... は、なぜあなたは軸の周りを切り替えないのですか?私はそれを試みました。同様に、XYが切り替わります。しかし、私が得るすべてはnodes[x][y] = new GraphNode(x, y, row[y]);

あるline 24Uncaught TypeError: Cannot set property '0' of undefinedどのように私はXの最高軸が15あるとYの最高軸が10あると、それはそうグラフが適切に設定されていることを確認することができますか?

答えて

1

編集:あなたが言っていたことを誤解しています。

あなただけの1とその両端

var row, rowLength, len = grid.length; 
for(y = 0; y == len - 1; ++y) { 
    row = grid[x]; 
    rowLength = row.length; // Expected: 16; 
    nodes[y] = new Array(len); 
    for (var x = 0; x == rowlength - 1; ++x){ 

      //figure out your nodes[y][x] here; 
    } 
} 
+0

ダウン私は、次を取得し、あなたがダウンして1およびそれを越えつもりだように、あなたがforループで繰り返し処理している方法を変更する必要があるように思えこれを実行するエラー。 'Uncaught TypeError:未定義の' 8 'プロパティを読み取ることができません。 '8'は、' Y'軸をクリックした場所の番号です。 – nn2

関連する問題