int generation = 0;
System.out.println("\nGeneration " + generation + ":");
for(int i = 0; i < rowcol; i++) {
if(i > 0) {
System.out.println();
}
for(int j = 0; j < rowcol; j++) {
System.out.print(arr[i][j] + " ");
}
}
boolean run = true;
int copy[][] = arr;
while(run) {
int alive = 0;
for(int i = 0; i < rowcol; i++) {
for(int j = 0; j < rowcol; j++) {
alive = 0;
//top left
if(i-1 > -1 && j-1 > -1) {
if(arr[i-1][j-1] == 1) {
++alive;
}
}
//top
if(i-1 > -1) {
if(arr[i-1][j] == 1) {
++alive;
}
}
//top right wtf
if(i-1 > -1 && j+1 < rowcol) {
if(arr[i-1][j+1] == 1) {
++alive;
}
}
//left
if(j-1 > -1) {
if(arr[i][j-1] == 1) {
++alive;
}
}
//right
if(j+1 < rowcol) {
if(arr[i][j+1] == 1) {
++alive;
}
}
// down left
if(i+1 < rowcol && j-1 > -1) {
if(arr[i+1][j-1] == 1) {
++alive;
}
}
//down
if(i+1 < rowcol) {
if(arr[i+1][j] == 1) {
++alive;
}
}
//down right
if(i+1 < rowcol && j+1 < rowcol) {
if(arr[i+1][j+1] == 1) {
++alive;
}
}
if(arr[i][j] == 1) {
if(alive < 2) {
copy[i][j] = 0;
} else if(alive > 3) {
copy[i][j] = 0;
}
} else if(arr[i][j] == 0 && alive == 3) {
copy[i][j] = 1;
}
}
}
arr = copy;
generation++;
System.out.println("\nGeneration " + generation + ":");
for(int i = 0; i < rowcol; i++) {
if(i > 0) {
System.out.println();
}
for(int j = 0; j < rowcol; j++) {
System.out.print(arr[i][j] + " ");
}
}
}
}
}
это мой код, в основном у меня есть домашнее задание по созданию Игры Жизни с сетками 1 и 0, как бы большими не были пользовательские вводы, но у меня возникла проблема, когда яПроверяю, сколько клеток вокруг него живы
Введите количество строк / столбцов: 3
0,1,1,1,0,0,0,1,0
Поколение 0:
0 1 1
1 0 0
0 1 0
Поколение 1:
01 0
1 1 1
1 0 0
Это то, что у меня есть в моей консоли, но должно быть только три - средняя вершина и левая и правая вв среднем ряду я использовал отладчик и обнаружил, что когда он проверяет мое среднее значение в среднем ряду, он по какой-то причине считает значение в верхнем правом углу живым, даже если он проходит через оба оператора if и яне знаю, почему живая переменная оказывается равной трем для этого места в середине среднего ряда, меняя его на единицу, этот код может быть ужасным, кстати, я 'Я довольно новичок в этом деле.Я надеюсь, что предоставил достаточно подробностей, просто спросите обо всем, что вам нужно знать, чтобы помочь ему.