간단한 JavaScript 2D (캔버스) 게임에서 A* pathfinding script을 사용하고 있습니다. 내 게임을 SSCCE으로 무너 뜨 렸습니다. 어쨌든 내 게임은 가로 15 열, 세로 10 행입니다.JavaScript - x 및 y 축에 대한 루프
무엇이 문제인가? 그래프를 설정하면 노드는 가로 지 11 배, 세로 10 배로 설정됩니다. 축 번호 X
축은 인 경우에만 11
까지 설정하면 최대 15
이어야합니다. 좋아, 그래서 내 문제가있다. 내 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
행이므로 (len
)은 11
입니다. 하지만 그 축은 X
입니다. X
축에 대한 내지도는 15
개의 행을 가지며 Y
축의 행은 16
행입니다.
이제 ... 축을 전환하지 않으시겠습니까? 나는 그것을 시험해 보았다. 마찬가지로 X
및 Y
이 전환되었습니다. 하지만 얻을 모두이다 line 24
에서 Uncaught TypeError: Cannot set property '0' of undefined
입니다 nodes[x][y] = new GraphNode(x, y, row[y]);
너무 그래프 X
에 따라 '가장 높은 축 15
하고 Y
'설정에서 가장 높은 축 10
이다 내가 할 수 있습니까?
내가 얻을 걸쳐 필요 같은
보인다 이것을 실행하는 중에 오류가 발생했습니다. Uncaught TypeError : undefined의 '8'속성을 읽을 수 없습니다. '8'은 'Y'축을 클릭 한 번호입니다. – nn2