设计一个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.设有一个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("");
}
} }
上面的是一个用随机数初始化数组的一个函数
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();
}
}
}