康威生命游戏不工作算邻居的方法不起作用

时间:2017-05-09 23:46:29

标签: java count

下面的代码片段是我生命游戏的代码。出于某种原因,它的工作非常奇怪。游戏的前几个步骤是错误的,然后整个输出变为零。我不知道哪种方法导致了这个问题,但我认为它是count neighbors方法。

该板是名为[t1, t2]的2D阵列,x和y坐标为GOLBoardcellRow。活细胞为1,死细胞为0。我避免出界问题的方法是将电路板设置为12x12,但对于行和列,我只使用1到11个。

cellCol

1 个答案:

答案 0 :(得分:1)

如果我正确地回顾了GOL的规则,电路板的演变应该在一系列“代”中进行,其中“新”电路板上每个电池的状态仅由相应电池的条件决定。在“旧”董事会。您的程序正在尝试不断发展单个板,因此对先前计算的单元的更改会影响尚未计算的单元的结果。你的takeStep例程应该做更像这样的事情:

newBoard = new int[12][12];
for (int row = 1; row < 11; row++) {
    for (int col = 1; col < 11; col++) {
        newBoard[row][col] = applyRules(row, col);
    }
}
GOLBoard = newBoard;

据我所知,你的countNeighbours还可以。