2012-03-05 3 views
1

나는 Java에서 삶의 게임 인 Conways를 작성하려고 노력하고 있지만, 제대로 작동하지 않습니다. 저것에 의하여 나는 말, 아직도 lifes은 일하고 그러나 깜박 거리는 사람과 배는하지 않는다.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; 
    } 

답변

4

state2=state1;은 당신이하지 무슨 생각을하고 있지 않습니다.

두 변수가 동일한 배열을 참조하게 만듭니다.

그래서, 당신은 실제로 당신이 그것을 해결하기 위해 "마지막 단계"

으로 복용하는 것과 같은 매트릭스를 변경, 당신은 state2state1를 복사해야합니다.

+0

정확히 내가 말하려고했던 것이지만 당신은 저를 때렸습니다. –

+0

"state2 = state1;"이 (가) 변경되었습니다. into "state2 = state1.clone();" 및 "state1 = state2"에 대한 반전은 문제가 지속됩니다. –

+1

'clone()'은 얕은 복제물이며, 비슷한 행동을합니다. 보십시오 [이 스레드] (http://stackoverflow.com/questions/419858/how-to-deep-copy-an-irregular-2d-array) 2 차원 배열을 깊은 복사하는 방법 – amit

관련 문제