康威生命游戏的问题(java)

时间:2012-03-05 11:33:54

标签: java

我正在尝试用Java编写conways游戏,但它不能正常工作。我的意思是,静物有效,但是闪光灯和船只没有。

这是我的算法的代码,播种由一个单独的鼠标监听器(按预期工作)处理。

    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;
    }

1 个答案:

答案 0 :(得分:4)

state2=state1;没有按照您的想法行事。

它只使两个变量引用相同的数组。

所以,你实际上正在改变你所采用的相同矩阵作为“最后一步”

要解决此问题,您需要将state1复制到state2