推进功能性生活游戏

时间:2015-01-14 11:46:08

标签: c++ arrays void

我做了一个功能,将我在生命游戏中的现状改变为下一代, 在1d阵列上工作,我的下一代出现了一些故障。我的场地刚刚完全重置,所以每个细胞都死了。我建议我仍然会怀念边境地区的情况。 我的问题是,如果有更简单的方法来实施下一代并给我一个帮助。

void GameOfLife::advance(){
int alive;
int dead;
int row,col;
for(int x = 0; x<=mapsize;x++){
                        SpielfeldNextGen[x]=Spielfeld[x];
                    }
for(row = 0; row<=mapheight-1;row++){
    for(col = 0; col<=mapwidth-1;col++){
        if (Spielfeld[mapwidth*col+row]               == '0'){
            if(Spielfeld[mapwidth*col+row+1]          == '0'){alive+=1;}
            if(Spielfeld[mapwidth*col+row-1]          == '0'){alive+=1;}
            if(Spielfeld[(mapwidth*col+row)-mapwidth]   == '0'){alive+=1;}
            if(Spielfeld[((mapwidth*col+row)-mapwidth)-1] == '0'){alive+=1;}
            if(Spielfeld[((mapwidth*col+row)-mapwidth)+1] == '0'){alive+=1;}
            if(Spielfeld[((mapwidth*col+row)+mapwidth)+1] == '0'){alive+=1;}
            if(Spielfeld[((mapwidth*col+row)+mapwidth)-1] == '0'){alive+=1;}
            if(Spielfeld[((mapwidth*col+row)+mapwidth)]   == '0'){alive+=1;}
        }

        else{
        if(Spielfeld[mapwidth*col+row+1]            == '0'){dead+=1;}
        if(Spielfeld[mapwidth*col+row-1]            == '0'){dead+=1;}
        if(Spielfeld[mapwidth*col+row-mapwidth] == '0'){dead+=1;}
        if(Spielfeld[mapwidth*col+row-mapwidth-1]   == '0'){dead+=1;}
        if(Spielfeld[mapwidth*col+row-mapwidth+1]   == '0'){dead+=1;}
        if(Spielfeld[mapwidth*col+row+mapwidth+1]   == '0'){dead+=1;}
        if(Spielfeld[mapwidth*col+row+mapwidth-1]   == '0'){dead+=1;}
        if(Spielfeld[mapwidth*col+row+mapwidth]     == '0'){dead+=1;}
        }
        if((alive<2)||(alive>3)){SpielfeldNextGen[mapwidth*col+row]='0';}
                                            else SpielfeldNextGen[mapwidth*col+row]='.';
        if(dead==3){SpielfeldNextGen[mapwidth*col+row]='.';}
                                            else SpielfeldNextGen[mapwidth*col+row]='0';
        alive=0;
        dead=0;
    }
}
for(int x = 0;x<=mapsize;x++){
                            Spielfeld[x]=SpielfeldNextGen[x];
                        }
}

0 个答案:

没有答案