Gra w życie
[code]
//* 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").
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace GameOfLife
{
class Program
{
static void Main(string[] args)
{
int[,] Plansza = new int[8, 8];
int[,] PlanszaEwolucja = new int[8, 8];
int i = 0, j = 0;
int martwa = 0;
int zywa = 1;
int sasiedzi = 0;
int cykl = 0;
int Wyginięcie = 0;
for (i = 0; i < 8 ; i++) // wypełnia plansze pustymi wartościami
for (j = 0 ; j < 8 ; j++)
{
Plansza[i,j]= martwa;
}
}
for (i = 0; i < 8; i++) //skopiowanie zawartości Plansza do PlanszaEwolucja
{
for (j = 0; j < 8; j++)
{
PlanszaEwolucja[i, j] = Plansza[i, j];
}
}
ponownie:
Console.WriteLine("0 - wyswietl stan początkowy.");
Console.WriteLine("1 - wpisz wartości.");
Console.WriteLine("2 - start.");
Console.WriteLine("3 - koniec.");
Console.WriteLine("Twój wybór to: ");
int a = int.Parse(Console.ReadLine());
Console.WriteLine();
if (a == 0)
{
for (i = 1; i <= 6; i++) // wypisuje zawartość tablicy dwuwymiarowej Plansza
{
for (j = 1; j <= 6; j++)
{
Console.Write(Plansza[i, j]);
}
Console.WriteLine();
}
Console.WriteLine();
goto ponownie; // skocz do ponownie, ponowny wybór
}
else if (a == 1)
{
Console.WriteLine("Podaj x planszy [x,y] od 1-6:");
int x = int.Parse(Console.ReadLine());
Console.WriteLine("Podaj x planszy [x,y] od 1-6:");
int y = int.Parse(Console.ReadLine()); //- jak zrobić w c# sprawdzenie aby nie można było wporwadzić innych cyfr niż od 1 do 6(coś jak CHECK w sql)?
Console.WriteLine("W polu [{0},{1}] powstało życie!",x,y);
Console.WriteLine();
Plansza[x, y] = 1;
goto ponownie;
}
else if (a == 2)
{
do // czas płynie bez przerwy
{
Console.Clear();
for (i = 1; i <= 6; i++) // przechodzi tablice dla każdego i
{
for (j = 1; j <= 6; j++) // dla kazdego i przechodzi każde j
{
Wyginięcie += Plansza[i, j];
sasiedzi = 0;
Console.Write(Plansza[i, j]);
for (int k = i - 1; k <= i + 1; k++) //dla każdej komórki w tablicy [i,j] przechodzi jego przylegająca punkty
{
for (int l = j - 1; l <= j + 1; l++)
{
sasiedzi += Plansza[k, l];
sasiedzi -= Plansza[i, j];
}
}
if ((sasiedzi == 2 && Plansza[i, j] == 1) | sasiedzi == 3)
// dla warunków sasiedzi równej 2 gdy wartość komórki Planszy jest równa 1
{
// lub gdy jest 3 sąsiadów komórki planszy ustawia komórce PlanszaEwolucja wartość 1.
PlanszaEwolucja[i, j] = zywa;
}
else if (sasiedzi > 3 | sasiedzi < 2)
{
PlanszaEwolucja[i, j] = martwa;
}
}
Console.WriteLine();
}
for (i = 1; i <= 6; i++)
{
for (j = 1; j <= 6; j++)
{
Plansza[i, j] = PlanszaEwolucja[i, j];
}
}
cykl += 1;
Console.WriteLine();
Console.WriteLine("Cykl: ");
Console.Write(cykl);
Thread.Sleep(1500);
if (Wyginięcie == 0)
{
goto zagłada;
}
} while (sasiedzi != -10);
}
zagłada:
Console.WriteLine("Wszelkie życie wymarło.");
}
}
}
[/code]
Witam. Zacząłem pisać grę w życie i myślałem, że zrobiłem to dobrze ale gdy sprawdziłem program poprzez lot szybowca z wiki okazało się, że nie działa tak jak powinien.
Proszę o pomoc w znalezieniu błędów.
Błąd raczej na pewno kryje się w ciele instrukcji else if (a == 2), dla jasności dodałem cały kod.
Odpowiedzi: 0
Strona 0 / 0