我正在使用 HTML5 canvas 构建 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?!
}
最佳答案
可能有两个原因:
在 JavaScript 中,变量是松散类型的,这就是为什么最好先解析
int
算术运算。尝试:
console.log(game.cells[parseInt(i,10) + parseInt(grid.cellsY,10)]);
你正在尝试访问一个数组,你需要检查是否
parseInt(i,10) + parseInt(grid.cellsY,10)
索引存在于你的 数组与否。
关于javascript - 似乎无法在 javascript 中添加两个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16175125/