Cześć, nie do końca wiem w czym tkwi mój problem, ale program nie zachowuje się tak jak teoretycznie powinen...
Zasady i kod :
Martwa komórka, która ma dokładnie 3 żywych sąsiadów, staje się żywa w następnej jednostce czasu (rodzi się)
Żywa komórka z 2 albo 3 żywymi sąsiadami pozostaje nadal żywa; przy innej liczbie sąsiadów umiera (z „samotności” albo „zatłoczenia”).
public class GameOfLife {
public static void game() {
int h = 55;
String[][] box = new String[h][h];
String cell = " * ";
String deadCell = " ";
int howManyCellsAround;
for(int i = 0; i < box.length; i++)
for(int j = 0; j< box.length; j++)
box[i][j] = deadCell;
//CELLLS
box[h/2][h/2] = cell;
box[(h/2)+1][h/2] = cell;
box[(h/2)-1][h/2] = cell;
while(true) {
for(int i = 0; i < box.length; i++) {
for(int j = 0; j< box.length; j++) {
howManyCellsAround = 0;
if(i-1 >= 0 && box[i-1][j].equals(cell)) howManyCellsAround++;
if(i+1 <= box.length-1 && box[i+1][j].equals(cell)) howManyCellsAround++;
if( j-1 >= 0 && box[i][j-1].equals(cell)) howManyCellsAround++;
if( j+1 <= box.length-1 && box[i][j+1].equals(cell)) howManyCellsAround++;
if(i-1 >= 0 && j+1 <= box.length-1 && box[i-1][j+1].equals(cell)) howManyCellsAround++;
if(i-1 >= 0 && j+1 <= box.length-1 && box[i-1][j+1].equals(cell)) howManyCellsAround++;
if(i+1 <= box.length-1 && j-1 >= 0 && box[i+1][j-1].equals(cell)) howManyCellsAround++;
if(i+1 <= box.length-1 && j+1 <= box.length-1 && box[i+1][j+1].equals(cell)) howManyCellsAround++;
if(howManyCellsAround == 3)
box[i][j] = cell;
if(howManyCellsAround < 2 && howManyCellsAround > 3 )
box[i][j] = deadCell;
}
}
for(int i = 0; i < box.length; i++) {
for(int j = 0, nextLine = 0; j< box.length; j++, nextLine++) {
System.out.print(box[i][j]);
if(nextLine > h-2) {
System.out.println();
nextLine = 0;
}
}
}
try {
Thread.sleep(500);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}