设计一个JAVA程序,完成生命游戏.过程如下:
   1.设有一个N*N的二维数组,用随机数对该数组初始化,初始化的值只有两种:
0和1.0表示该格子无生物,1表示该格子有生物.
   2.若一个格子有生物体,其四周8个格子中的6个格子有生物体,刚下一轮繁殖时,该格子里的生物死亡.否则在下一轮继续生存.若一个格子是空,但其四周有4个格子有生物,则下一次繁殖时,该格子将诞生生物.否则继续为空.
   3.一个空格子经过三代繁殖后将诞生生物体.
   4.在同一轮,所有格子同时计算其"繁殖"情况
   5.按下Q键,程序结束. 
我只做了第一步,剩下的不知道如何是好,大家提供一下思路.import java.util.Random;
class Array
{
    public static void main(String[]args)
    {
        Random m=new Random();
     int N=Integer.parseInt(args[0]);
     int array[][]=new int[N][N];
     for (int i=0;i<N ;i++ )
     {
         for(int k=0;k<N;k++)
         {
             array[i][k]=m.nextInt(2);
         }     }
     for(int i=0;i<N;i++)
     {
         for(int k=0;k<N;k++)
         {
          System.out.print(array[i][k]+" ");
         }
         System.out.println("");
     
     }
    } }
上面的是一个用随机数初始化数组的一个函数

解决方案 »

  1.   


    package net.xz;import java.util.Random;public class Life {
    int n; int[][] array; int[][] time; public int[][] init(int n) {
    this.n = n;
    Random ran = new Random();
    array = new int[n][n];
    time = new int[n][n];
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
    array[i][j] = ran.nextInt(2);
    time[i][j] = 0;
    }
    }
    return array; } public int getArray(int i, int j) { return array[i][j];
    } public void setArray(int[][] array) {
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
    this.array[i][j] = array[i][j];
    }
    }
    } public int getRound(int i, int j) {
    int round = 0;
    if (i > 0)
    round += array[i - 1][j];
    if (j > 0)
    round += array[i][j - 1];
    if (i < n - 1)
    round += array[i + 1][j];
    if (j < n - 1)
    round += array[i][j + 1];
    if (i > 0 && j > 0)
    round += array[i - 1][j - 1];
    if (i < n - 1 && j < n - 1)
    round += array[i + 1][j + 1];
    if (i > 0 && j < n - 1)
    round += array[i - 1][j + 1];
    if (i < n - 1 && j > 0)
    round += array[i + 1][j - 1];
    return round;
    } public int getTime(int i, int j) {
    if (time[i][j] == 3)
    time[i][j] = 0;
    if (array[i][j] == 0)
    time[i][j]++;
    else
    time[i][j] = 0;
    return time[i][j];
    } public void printArray() {
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
    System.out.print(array[i][j] + " ");
    }
    System.out.println();
    }
    }
    }
    ------------------------------------------
    package net.xz;public class GameRun {
    public static void main(String[] args) {
    int n = 8;// 格子大小
    int m = 8;// 繁殖次数
    Life life = new Life();
    int[][] array = new int[n][n];
    for (int k = 0; k < n; k++) {
    for (int h = 0; h < n; h++) {
    array[k][h] = life.init(n)[k][h];
    }
    }
    life.printArray();
    System.out.println();
    int f = 1;
    while (f < m) {
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
    if (life.getArray(i, j) == 1 && life.getRound(i, j) > 5)
    array[i][j] = 0;
    if (life.getArray(i, j) == 0 && life.getRound(i, j) > 3)
    array[i][j] = 1;
    if (life.getTime(i, j) == 3)
    array[i][j] = 1;
    } }
    life.setArray(array);
    life.printArray();
    f++;
    System.out.println();
    }
    }
    }