/// <summary> /// Der Konstruktor der Die RelayCommand Erstellt /// </summary> public Spiel() { SpielStarten = new RelayCommand((object a) => SpielStartenSchleife(), f => !Laeuft); SpielStoppen = new RelayCommand((object a) => SpielSchleifeStoppen(), f => Laeuft); SpielBrettErstellen = new RelayCommand((object a) => SpielBrett = new SpielBrett(Breite, Hoehe, PixelAnzahl), f => (HatBreite && HatHoehe && HatPixelAnzahl) && !Laeuft); SpielBrettZufälligFüllen = new RelayCommand((object a) => SpielBrett.ZellenZufälligEinfügen(), (object f) => !Laeuft); }
/// <summary> /// Startet eine Schleife in der das Spiel Läuft /// </summary> public void SpielStartenSchleife() { Laeuft = true; ThreadPool.QueueUserWorkItem(o => { while (Laeuft) { SpielBrett.NaechsterZug(); Thread.Sleep(Verzoegerung); } }); }
/// <summary> /// Errechnet den Nächsten Status der Zelle /// </summary> /// <param name="spielBrett"></param> public void GetNaechstenStatus(SpielBrett spielBrett) { int LebendeNachbarn = Nachbarn.Select(point => spielBrett[point]).Count(zelle => zelle.Lebt); if (!Lebt) { WirdLeben = LebendeNachbarn == 3; } else { WirdLeben = (LebendeNachbarn >= 2 && LebendeNachbarn <= 3); } }