【发布时间】:2013-04-17 00:12:25
【问题描述】:
我正在使用 HTML5 画布构建 John Conways 的生活游戏。 它有一个 gameOfLife 对象,其中包含一个包含所有单元格及其状态(死/活)的数组。 以下是构建单元的代码:
function cell(x,y){
this.x = x;
this.y = y;
this.isAlive = false;
}
我正在探索检查细胞周围细胞状态的方法。据我了解,一种方法是遍历数组并找到一个坐标与当前检查的单元格周围匹配的单元格。
我正在考虑另辟蹊径。通过从正在评估的单元格的索引中添加和减去 Y(和 X)轴上的单元格数量(+1 和 -1 的微小变化),您应该能够得出任何顶部的索引左、左、左下、右上、右、右下单元格。
我无法测试这个想法,因为它无法让我获得所需的索引:
所以,在我的更新循环中:
//I know that there is a cell at the index of exampleIndex + cellsY
exampleIndex = 200;
game.getLivingNeighbours(exampleIndex);
function getLivingNeighbours(i){
console.log(i) //Logs an integer
console.log(grid.cellsY) //Logs an integer
console.log(game.cells[i + grid.cellsY]); //Undefined?!
}
【问题讨论】:
-
这是什么?
cellsX或cellsY? -
您正在尝试添加
i和cellsY。您正在检查cellsX是否为整数,但您从不检查cellsY -
console.log(i + grid.cellsY);显示什么?什么是game.cells? -
@styke 那么它们是字符串,而不是整数。要么将它们设为整数,要么使用
parseInt(num, 10)解析它们 -
@styke 只有其中一个必须是字符串。如果一个是字符串,另一个会自动转换成字符串并连接起来。
标签: javascript jquery arrays indexing integer