我做了一个功能,将我在生命游戏中的现状改变为下一代, 在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];
}
}