下面的代码片段是我生命游戏的代码。出于某种原因,它的工作非常奇怪。游戏的前几个步骤是错误的,然后整个输出变为零。我不知道哪种方法导致了这个问题,但我认为它是count neighbors方法。
该板是名为[t1, t2]
的2D阵列,x和y坐标为GOLBoard
和cellRow
。活细胞为1,死细胞为0。我避免出界问题的方法是将电路板设置为12x12,但对于行和列,我只使用1到11个。
cellCol
答案 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
还可以。