當前位置:星座運勢大全官網 - 八字算命 - 求用java寫的人生象棋源代碼

求用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

}

}