求用java写的人生象棋源代码

/** 0表示死亡,1表示活着。

手动输入状态。根据以下规则计算:

1每个网格中是否存在下一代活细胞,取决于当前与该网格相邻的八个网格中的细胞存活情况。

当一个活细胞周围有2或3个活细胞时,该细胞仍会存活到下一代;或者死亡。

当一个网格周围有三个活细胞时,在下一代,活细胞将出现在网格中。

*/

公共类CellLife {

/**

* @param args

*/

公共静态void main(String[] args) {

// TODO自动生成的方法存根

//int[][]arr = new int[5][5];//5*5棋盘

int[][] arr = {{0,1,0,1,0},{1,1,0,0},{0,0,1,1,1},{1,1,0,0,0},{0,0,1

int[][] brr = {{0,0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0,0},{0,0,0,0 } };;//状态待机

int x,y;//记录行和列

int CNT = 0;//记录迭代次数

布尔标志=真;

System.out.println("初始状态:");

for(int I = 0;我& lt5;i++) {

for(int j = 0;j & lt5;j++)

system . out . print(arr[I][j]+" ");

system . out . println();

}

int[]nb = new int[8];//8个邻居

while(flag) {

cnt++;

for(int I = 0;我& lt5;i++) {

for(int j = 0;j & lt5;j++) {

x = I-1;

y = j-1;

如果((x & gt= 0)& amp;& amp(y & gt=0))

nb[0]= arr[x][y];

其他

nb[0]= 0;

x = I-1;

y = j;

if(x & gt;=0)

nb[1]= arr[x][y];

其他

nb[1]= 0;

x = I-1;

y = j+1;

如果((x & gt= 0)& amp;& amp(y & lt5))

nb[2]= arr[x][y];

其他

nb[2]= 0;

x = I;

y = j-1;

如果(y & gt=0)

nb[3]= arr[x][y];

其他

nb[3]= 0;

x = I;

y = j+1;

if(y & lt;5)

nb[4]= arr[x][y];

其他

nb[4]= 0;

x = I+1;

y = j-1;

如果((x & lt5)& amp;& amp(y & gt=0))

nb[5]= arr[x][y];

其他

nb[5]= 0;

x = I+1;

y = j;

if(x & lt;5)

nb[6]= arr[x][y];

其他

nb[6]= 0;

x = I+1;

y = j+1;

如果((x & lt5)& amp;& amp(y & lt5))

nb[7]= arr[x][y];

其他

nb[7]= 0;

//判断下一代的状态

int sum = 0;

for(int n = 0;n & lt8;n++)

sum = sum+nb[n];

If(arr[i][j]==1)//活细胞

if(sum==2||sum==3)

brr[I][j]= 1;

其他

brr[I][j]= 0;

Else //死细胞

if(sum==3)

brr[I][j]= 1;

其他

brr[I][j]= 0;

}

}

flag =!CellLife.same(arr,brr);

// System.out.println("下一代状态:");

for(int I = 0;我& lt5;i++) {

for(int j = 0;j & lt5;j++) {

arr[I][j]= brr[I][j];

//system . out . print(arr[I][j]+" ");

}

//system . out . println();

}

}

System.out.println("最终状态:");

for(int I = 0;我& lt5;i++) {

for(int j = 0;j & lt5;j++)

system . out . print(arr[I][j]+" ");

system . out . println();

}

System.out.println("迭代次数:"+CNT);

}

public static boolean same(int[][]a,int[][] b) {

for(int I = 0;我& lt5;i++)

for(int j = 0;j & lt5;j++)

if(a[i][j]!=b[i][j])

返回false

返回true

}

}