2015-03-27 3 views
0

Для моего первого проекта, использующего классы, я решил написать «The Game of Life». Я создал класс под названием 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

Посмотрите на ваш для петель:

for(int x = 0;x > 10;x++){ 
    for(int y = 0; y > 10;y++){ 

Ни один из этих петель никогда не будет введен.

В качестве примечания, вы должны использовать правильные соглашения об именах: переменные начинаются с строчных букв, классы начинаются с прописных букв.

Также игра Жизни работает в «поколениях». Вы не можете обновлять одну ячейку за раз, иначе она выбрасывает всех соседей этой ячейки.

+0

О петлях: О, боже мой, я так глуп! О поколениях: поэтому я должен использовать два массива для проверки соседей из prev. и один для установки состояний следующего поколения? P.S.: Мне нравится ирония вашего профиля pic XD – IGClusterFck

+0

@Sipi Да, вам нужны два массива: один для текущего поколения, а другой для следующего поколения. Попробуйте это, чтобы посмотреть, о чем я говорю. –