Prześledziłem pracę kodu debuggerem i teoretycznie wszystko działa tak jak powinno. Jednak konsola w następnym ruchu wyświetla same zera lub jedynki. Od dwóch dni stoję w tym samym punkcie nie mogąc znaleźć przyczyny czemu tak się dzieje. Próbowałem także użyć switcha w metodzie cell_condition z takim samym skutkiem.
class Class1
{
int[,] plansza = new int[10, 10];
int[,] nastepna = new int[10, 10];
int[] pomocnicza = new int[100];
int y, x;
int a, b, c, d, e, f, g, h;
int i = -1;
public void fill_random() //wypełnij losowo
{
Random random = new Random();
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
plansza[i, j] = random.Next(2);
}
}
}
public void show() //wyświetlenie tablicy w formie tabeli
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
Console.Write(plansza[i, j] + " ");
if (j == 9)
Console.WriteLine(" ");
}
}
}
public void next()
{
for (int y = 0; y < 10; y++)
{
for (int x = 0; x < 10; x++)
{
if (y - 1 < 0 || x - 1 < 0 || y - 1 > 9 || x - 1 > 9) //definicja sąsiadów, sprawdzenie czy nie wykraczają poza
a = 0; // zakres tablicy i obliczanie sumy ich wartości
else
a = plansza[y - 1, x - 1];
if (y - 1 < 0 || x < 0 || y - 1 > 9 || x > 9)
b = 0;
else
b = plansza[y - 1, x];
if (y - 1 < 0 || x + 1 < 0 || y - 1 > 9 || x + 1 > 9)
c = 0;
else
c = plansza[y - 1, x + 1];
if (y < 0 || x - 1 < 0 || y > 9 || x - 1 > 9)
d = 0;
else
d = plansza[y, x - 1];
if (y < 0 || x + 1 < 0 || y > 9 || x + 1 > 9)
e = 0;
else
e = plansza[y, x + 1];
if (y + 1 < 0 || x - 1 < 0 || y + 1 > 9 || x - 1 > 9)
f = 0;
else
f = plansza[y + 1, x - 1];
if (y + 1 < 0 || x < 0 || y + 1 > 9 || x > 9)
g = 0;
else
g = plansza[y + 1, x];
if (y + 1 < 0 || x + 1 < 0 || y + 1 > 9 || x + 1 > 9)
h = 0;
else
h = plansza[y + 1, x + 1];
i += 1;
pomocnicza[i] = a + b + c + d + e + f + g + h; //zapisanie dla każdej komórki sumy sąsiadów
}
}
}
public void cell_condition()
{
for (int y = 0; y < 10; y++) //algorytm zmiany stanu komórek i przypisanie otrzymanej wartości do tablicy nastepna[]
{
for (int x = 0; x < 10; x++)
{
for (int i = 0; i < 100; i++)
{
if (pomocnicza[i] == 0 || pomocnicza[i] == 1 || pomocnicza[i] == 4 || pomocnicza[i] == 5 || pomocnicza[i] == 6 || pomocnicza[i] == 7 || pomocnicza[i] == 8)
{
nastepna[y, x] = 0;
}
else if (pomocnicza[i] == 3)
{
nastepna[y, x] = 1;
}
else
{
plansza[y, x] = nastepna[y, x];
}
}
}
}
}
public void show_next() //pokaz tablice zawierajaca wynik w nastepnej rundzie
{
Console.ReadKey();
Console.WriteLine();
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
Console.Write(nastepna[i, j] + " ");
if (j == 9)
Console.WriteLine(" ");
}
}
}
}