我使用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)索引存在于您的
    数组与否。
  • 09-11 18:44
    查看更多