JavaScript - 用于 x 轴和 y 轴上的循环
JavaScript - for loops on x and y axes
我在一个简单的JavaScript 2D(画布(游戏中使用A*寻路脚本。我把我的游戏分解为SSCCE。无论如何,我的游戏是 15 列和 10 行。
问题出在哪里?设置图形时,节点仅设置了 11 次,上下设置了 10 次。X
轴应该最多15
,因为它看起来最多只能设置grid.length
11
。好的,这就是我的问题。我的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
列。但是,我的graph
并没有这样解释。
在此处查看整个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
循环只转到grid.length
(len
(,这是11
的,因为它是向下11
行。但这是X
轴。 我的X
轴地图横跨15
列,Y
轴向下16
行。
现在你说...你为什么不切换轴?我试过了。就像,X
和Y
被切换。但我得到的只是Uncaught TypeError: Cannot set property '0' of undefined
line 24
这是nodes[x][y] = new GraphNode(x, y, row[y]);
我怎样才能使图形相应地设置X
的最高轴是15
而Y
的最高轴是10
?
编辑:误解了你在说什么。
似乎您只需要更改使用 for 循环进行迭代的方式,以便向下并穿过它,向下向下并穿过它
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;
}
}
相关文章:
- Jpgraph:如何手动设置X轴和Y轴的范围
- 我应该如何循环通过和“;关联对象“;在javascript中
- NVD3.js多图形,具有固定的x轴和y轴
- 循环jQueryajax和传递参数的正确方式
- 高图 - 散点:设置 x 轴和 y 轴的小数
- RequireJS,循环依赖和导出“魔术”方法
- 高图多个 y 轴和动态更新
- X 轴和 Y 轴打印日期
- 如何在煎茶上循环存储和计数字段数据
- 循环访问和读取 JSON 数据
- d3.js如何区分 X 轴和 Y 轴
- AngularJS中的循环依赖和OOP问题
- 使用 jquery/ HTML 根据 x 轴和 y 轴显示图像
- JavaScript - 用于 x 轴和 y 轴上的循环
- Javascript:使用 for 循环定位和删除数组对象
- JavaScript / CSS 循环图像和内容库 - 我的脚本的第一个小部分不起作用
- 如何使完整的百万值显示在 y 轴和工具提示(高图表)上
- 使用 JavaScript 中的 for 循环值和 PHP 变量
- Dojo+Highcharts:showAxes属性移动x轴和y轴
- 在x轴和带时间刻度的直线之间添加空格