2015-11-07 89 views
0

我正在像幾乎所有其他初學者一樣製作康威的人生遊戲。我遇到的主要問題是我不知道如何實現遊戲規則,即:具有三個活的鄰居的死亡小區變得活着,一個活着的小區恰好有一個活的鄰居變成死亡,並且具有更多的活細胞三個活着的鄰居死了。我從來沒有操縱矩陣,所以我不知道從哪裏開始。我所在的類不允許我們使用非靜態方法,而且我們也不能使用java庫。這是目前我有:康威的人生遊戲規則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語句來檢查這些細胞是否還活着或死亡。任何幫助表示讚賞。

+4

[你的同學?](http://stackoverflow.com/questions/33585278/conways-game-of-life-bug) – Kenney

回答

0

HINTS 最近我完成了這個例子。所以右側的結構是:

  1. 必需2維陣列(「當前」 &「下一個」)
  2. 初始化「當前」與隨機值
  3. 打印「當前」
  4. 複印&計算每個小區下一代陣列「下一個」
  5. 計算完成後,更新「當前」數組。使用功能更新每個細胞
  6. 集「當前」與「下一代」值
  7. 打印「當前」,然後轉到步驟4

警告! 使用不同的公式檢查邊緣上的單元格。