我正在尝试重现Game of Life,但我有一个错误。细胞根据设计诞生,但它们不会死亡。这使我感到困惑,因为我杀死细胞的策略与生成细胞的策略相同。这是控制台输出的一部分,'x'表示活细胞,' - '表示死细胞。
---------
---------
---------
---xx----
----x----
----x----
----xx---
---------
---------
---------
---------
---------
---xx----
----xx---
---xx----
----xx---
---------
---------
---------
---------
---------
---xxx---
----xx---
---xx----
---xxx---
---------
---------
相关的代码:
public class Life {
final static int WIDTH = 9, HEIGHT = 9;
void start(){
// scanning input file
char[][][] board = new char[WIDTH][HEIGHT][maxAllowedGenerations];
board = getInitialBoard(initialBoardString, maxAllowedGenerations, board);
for (int generation = 1; generation < maxAllowedGenerations; generation++){
for (int y = 0; y < HEIGHT; y++)
for (int x = 0; x < WIDTH; x++){
int numberOfNeighbours = getNumberOfNeighbours(x, y, generation - 1 , board);
if (board[x][y][generation - 1] == '-' && numberOfNeighbours == 3)
board[x][y][generation] = 'x';
else if (board[x][y][generation - 1] == 'x' && numberOfNeighbours < 2)
board[x][y][generation] = '-';
else board[x][y][generation] = board[x][y][generation - 1];
if (board[x][y][generation] == 'x')
ui.place(x, y, LifeUserInterface.ALIVE);
else
ui.place(x, y, LifeUserInterface.DEAD);
out.print(board[x][y][generation]);
}
out.println();
}
}
out.println("Max number of generations reached");
System.exit(0);
}
答案 0 :(得分:2)
我同意@elyashiv - 如果您将char[][][] board
更改为SomeEnum[][][] board
,并SomeEnum
定义了值为LIVE_CELL
和DEAD_CELL
的内容可读的。
此外,没有空字符''。空String
只是一个String
,长度为零(即没有字符),但是''没有意义。您可以使用null
,但之后您必须放弃原始char
声明并使用Character
,因为原语不能null
1}}。
尽管如此,使用枚举来表示数据要好得多。如果你愿意,你甚至可以让你的枚举看起来像这样你可以像这样代表你的X和空字符:
public enum SomeEnum {
LIVE_CELL("X"),
DEAD_CELL("");
public final displayString;
SomeEnum(String displayString) {
this.displayString = displayString;
}
}
然后,对于您的显示,您可以在代码中引用SomeEnum.LIVE_CELL.displayString
答案 1 :(得分:1)
发现两个错误!其中一个是你不可能发现的,因为我没有发布它所包含的代码:我是[x] [y] [g]的单元格。我在考虑[x] [y] [g - 1]是一个邻居,但那当然是我!我不是我自己的邻居。
另一个错误实际上有点令人尴尬。我遗漏了规则2 ...&gt;。&lt;
我也意识到我应该发布生命游戏的规则,而不是假设你们都知道它们,或者你们会费心去研究它们。现在有点晚了,但无论如何我会发布它们以防你感兴趣。另外,对于对自组织感兴趣的人,我真的推荐wiki article。
规则:
感谢您的所有输入!