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

Damianwskiz
Dodano:
05.06.2012 15:48:43
Komentarzy:
0
Strona 0 / 0