Javascript 康威生命游戏算法工作不正常

Javascript 康威生命游戏算法工作不正常,javascript,jquery,arrays,algorithm,conways-game-of-life,Javascript,Jquery,Arrays,Algorithm,Conways Game Of Life,我已经建立了康威生活游戏,但算法工作不正常。为此,我混合使用了Js和Jquery。我的程序所做的是一个单元一个单元地遍历整个棋盘,检查单元的邻居,并通过检查每个单元的邻居将游戏规则应用到每个单元。以下是代码: function checkSquares() { generation++; document.getElementById('gen').innerHTML=generation; for (var i = 100; i <= 6220; i

我已经建立了康威生活游戏,但算法工作不正常。为此,我混合使用了Js和Jquery。我的程序所做的是一个单元一个单元地遍历整个棋盘,检查单元的邻居,并通过检查每个单元的邻居将游戏规则应用到每个单元。以下是代码:

    function checkSquares() {
     generation++;
     document.getElementById('gen').innerHTML=generation;
     for (var i = 100; i <= 6220; i++) {

      if (squareArray[i][1] === 1) {
        var total = squareArray[i + 81][1] + squareArray[i + 80][1] + squareArray[i + 79][1] + squareArray[i - 81][1] + squareArray[i - 80][1] + squareArray[i - 79][1] + squareArray[i + 1][1] + squareArray[i - 1][1];

        switch (total) {
          case 0:
          case 1:
            squareArray[i][1] = 0;

            $('#square' + i).css("background-image", "url('http://www.fg-a.com/wallpapers/geo-shapes-black-1280.jpg')");
            break;
          case 4:
          case 5:
          case 6:
          case 7:
          case 8:
            squareArray[i][1] = 0;
            $('#square' + i).css("background-image", "url('http://www.fg-a.com/wallpapers/geo-shapes-black-1280.jpg')");
            break;
        }
      }else{
        var total = squareArray[i + 81][1] + squareArray[i + 80][1] + squareArray[i + 79][1] + squareArray[i - 81][1] + squareArray[i - 80][1] + squareArray[i - 79][1] + squareArray[i + 1][1] + squareArray[i - 1][1];
        switch(total){
          case 3:
            squareArray[i][1] = 1;
            $('#square' + i).css("background-image", "url('https://c1.staticflickr.com/3/2942/15323841455_6c64757dbd_b.jpg')");
            break;
        }
      }
    }

  eliminate();
}
因此,显而易见的解决办法是以某种方式检查整个模式,然后决定细胞是生存还是死亡。但是我如何一次检查几个单元格呢

此外,如果有帮助,以下是完整程序的codepen链接:


您需要保留旧板,并根据规则生成新板(称为生成)

然后跳过旧板,使用新板

只有一块板不起作用,因为在与相邻板交互时会破坏板的实际状态

初始模式构成了系统的种子。第一代是通过将上述规则同时应用于种子中的每个细胞而产生的,出生和死亡同时发生,发生这种情况的离散时刻有时称为滴答声(换句话说,每一代都是前一代的纯函数)。这些规则将继续重复应用,以创建下一代


您需要保留旧板,并根据规则生成新板(称为生成)

然后跳过旧板,使用新板

只有一块板不起作用,因为在与相邻板交互时会破坏板的实际状态

初始模式构成了系统的种子。第一代是通过将上述规则同时应用于种子中的每个细胞而产生的,出生和死亡同时发生,发生这种情况的离散时刻有时称为滴答声(换句话说,每一代都是前一代的纯函数)。这些规则将继续重复应用,以创建下一代

      cell here dies ---->   []  
      new cell born here --> []  <-- new cell born here
      cell here dies ---->   []  
                     checks this cell, only one neighbour so it dies ---> []  
    When it comes to this cell it has only one neighbour because above -> []
    neighbour died. Therefore it dies.
                     No neighbours, so this dies -----------------------> []