【问题标题】:Conway's Game of Life Rules Java康威的生命游戏规则 Java
【发布时间】:2015-11-07 20:32:42
【问题描述】:

我正在像几乎所有其他初学者一样制作康威的生命游戏。我遇到的主要问题是我不知道如何实施游戏规则,即:一个只有三个活邻居的死细胞变成活细胞,一个只有一个活邻居的活细胞变死,一个活细胞有更多比三个活着的邻居死了。我以前从未操纵过矩阵,所以我不知道从哪里开始。我所在的类还不允许我们使用非静态方法,而且我们也不能使用 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 语句来检查细胞是活的还是死的。任何帮助表示赞赏。

【问题讨论】:

标签: java conways-game-of-life


【解决方案1】:

提示 最近我完成了这个例子。所以正确的结构是:

  1. 必需的二维数组(“当前”和“下一个”)
  2. 用随机值初始化“当前”
  3. 打印“当前”
  4. 复制并计算数组“next”中下一代的每个单元格
  5. 计算后,更新“当前”数组。使用函数更新每个单元格
  6. 将“当前”设置为“下一代”值
  7. 打印“当前”并转到第 4 步

警告!! 使用不同的公式检查边缘的单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2017-03-15
    • 1970-01-01
    相关资源
    最近更新 更多