1
私はJavaでConways game of lifeを書こうとしていますが、それはうまくいきません。それは私が意味することは、まだ生命は動作するが、ウインカーと船はそうではないということです。Conwaysの問題Game of Life(java)
私のアルゴリズムのコードは次のとおりです。シードは、別個のマウスリスナー(意図したとおりに動作しています)によって処理されます。
int[][] state1 = new int[80][80];
int[][] state2 = new int[80][80];
public void logic(){
state2=state1;
for(int i=0;i<80;i++){
for(int j=0;j<80;j++){
int sum=state1[(i-1+80)%80][j]+state1[(i-1+80)%80][(j-1+80)%80]+state1[i][(j-1+80)%80]+state1[(i+1)%80][(j-1+80)%80]+state1[(i+1)%80][j]+state1[(i+1)%80][(j+1)%80]+state1[i][(j+1)%80]+state1[(i-1+80)%80][(j+1)%80];
if(sum!=2 && sum!=3){
state2[i][j]=0;
}
else if(sum==3){
state2[i][j]=1;
}
}
}
state1=state2;
}
これはまさに私が言うつもりでしたが、あなたは私にそれを打ち負かしました。 –
「state2 = state1;」を変更しました。 "state2 = state1.clone();"に変更します。 "state1 = state2"の逆もありますが、問題は解決しません。 –
'clone()'は浅いクローンです。同様の動作をします。 [このスレッド]を見てください(http://stackoverflow.com/questions/419858/how-to-deep-copy-an-irregular-2d-array)2dアレイを深くコピーする方法 – amit