5

我正在用 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?!

}
4

1 回答 1

5

可能有两个原因:

  1. 在 JavaScript 中,变量是松散类型的,这就是为什么int在算术运算之前解析它是好的原因。

    尝试:

    console.log(game.cells[parseInt(i,10) + parseInt(grid.cellsY,10)]);
    
  2. 您正在尝试访问一个数组,您需要检查 parseInt(i,10) + parseInt(grid.cellsY,10)您的数组中是否存在索引。

于 2013-04-23T17:06:04.917 回答