对于我使用课程的第一个项目,我决定写下#34;生命游戏"。 我创建了一个名为cell的类,它的工作是检查附近的单元格是否存活(变量状态为真),然后决定该单元格是否在下一帧存活。 这是我的代码
public cell Cell[][] = new cell[10][10];
public boolean state[][] = new boolean[10][10];
void setup(){
size(200,200);
for(int x = 0;x > 10;x++){
for(int y = 0; y > 10;y++){
state[x][y] = false;
}
}
state[1][1] = true;
state[1][2] = true;
state[2][1] = true;
state[2][2] = true;
for(int x = 0;x > 10;x++){
for(int y = 0; y > 10;y++){
Cell[x][y] = new cell(x,y,state[x][y]);
}
}
}
void draw(){
for(int x = 0;x > 10;x++){
for(int y = 0; y > 10;y++){
Cell[x][y].update();
}
}
}
class cell{
boolean state; int ngbs,posx,posy;
cell(int gridX,int gridY,boolean State){
posx = gridX;
posy = gridY;
state = State;
}
void update(){
if(Cell[posx-1][posy].state == true){ngbs++;}
if(Cell[posx+1][posy].state == true){ngbs++;}
if(Cell[posx][posy-1].state == true){ngbs++;}
if(Cell[posx][posy+1].state == true){ngbs++;}
if(Cell[posx+1][posy-1].state == true){ngbs++;}
if(Cell[posx+1][posy+1].state == true){ngbs++;}
if(Cell[posx-1][posy+1].state == true){ngbs++;}
if(Cell[posx-1][posy-1].state == true){ngbs++;}
if(ngbs == 3){state = true;}
if((ngbs != 2) && (ngbs != 3)){state = false;fill(0);}
if(state){fill(255);}else{fill(0);}
rect(posx*10,posy*10,10,10);
}
}
答案 0 :(得分:0)
看看你的for循环:
for(int x = 0;x > 10;x++){
for(int y = 0; y > 10;y++){
这些循环都不会输入。
作为旁注,你真的应该使用正确的命名约定:变量以小写字母开头,类以大写字母开头。
此外,生命游戏在“世代”中运作。您不能一次更新一个单元格,否则会抛弃该单元格的所有邻居。