我正在制作康威的生活游戏,就像几乎所有其他初学者一样。我的主要问题是我不知道如何执行游戏规则,这些规则是:一个有三个活邻居的死细胞变成活细胞,一个有一个活邻居的活细胞变成死细胞,一个有三个以上活邻居的活细胞变得死了。我以前从未操纵过矩阵,所以我不知道从哪里开始。我所在的类还不允许我们使用非静态方法,而且我们也不能使用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代中的每个活单元格放在
我试图为康威的生活游戏写一个计数邻居方法。如果一个死细胞与2或3个活细胞相邻,它应该会活过来。然而,我的代码没有正确计算所有的邻居。如果我给输入坐标(10, 10), (10, 11), (10, 12)这将产生 该程序将下一代打印为 坐标在(10,11)和(11,11)。但是,在(9,11)也应该有一个点。我知道问题发生在这个函数中,对于点(9,11),函数不包括3个邻居。
我正在用Java编写Conway的生活游戏,在代码中遇到了一个逻辑错误。如果您不熟悉游戏,以下是基本规则: 生命的游戏是一个简单的模拟,发生在一个网格的细胞。每个细胞可以是活的,也可以是死的,并且它与相邻的细胞相互作用(水平、垂直或对角)。在每次迭代中,都会做出决定,看看活细胞是否存活,或者死细胞是否存活。算法如下: 如果一个细胞是活的:如果它有少于两个活着的邻居,它会因为孤独而死亡。如果它有两个
292. Nim Game[E] 题目 You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the la
技术支持工程师-医疗方向-杭州 时间线: 9.04:测评 9.06:笔试 9.21:一面 1、一面(钉钉)(第一个面试) 1.01 自我介绍 1.02 问项目 1.03 项目中的主要工作 1.04 最有成就感的事情,详细说下 1.05 当班长的体会 1.06 对这个岗位的了解 1.07 课余爱好 1.08 长期坚持的爱好 1.09 为什么选这个城市 1.10 反问