我正在像几乎所有其他初学者一样制作康威的生命游戏。我遇到的主要问题是我不知道如何实现游戏规则,其中包括:正好有三个活着的邻居的死细胞变得活着,只有一个活着的邻居的活细胞变得死亡,还有一个活细胞更多比三个活着的邻居都死了。我以前从未操纵过矩阵,所以我不知道从哪里开始。 I类中的类不允许我们使用非静态方法,而且我们也不能使用java库。这就是我现在所拥有的:
public class Life {
public static boolean[][] origin(int a) {
boolean[][] randomMatrix = new boolean [a][a];
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
randomMatrix[i][j] = StdRandom.bernoulli();
}
}
return randomMatrix;
}
public static void print(boolean[][] a) {
int N = a.length;
StdOut.println(N);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (a[i][j]) StdOut.print("1 ");
else StdOut.print("0 ");
}
StdOut.println();
}
}
public static void show(boolean[][] a, boolean which) {
int N = a.length;
StdDraw.setXscale(0, N-1);
StdDraw.setYscale(0, N-1);
double r = .5;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (a[i][j] == which) {
StdDraw.filledSquare(j, N-i-1, r);
}
}
}
}
public static void main(String[] args) {
int a = 5;
boolean[][] b = origin(a);
int gens = 3;
for (int i = 0; i < gens; i++) {
System.out.println("Generation " + i + ":");
print(b);
show(b, true);
}
}
}
我现在收到的输出是我最初生成游戏所需要的。我想我需要一个新的数组来存储新一代,也许需要一些if和else语句来检查单元格是活着还是死了。任何帮助表示赞赏。
答案 0 :(得分:0)
<强> HINTS 强> 最近我完成了这个例子。所以正确的结构是:
警告! 使用不同的公式来检查边缘上的单元格。