private void CheckMitSpielerDabei() { foreach (SpielerBase sb in AlleMitspieler) { //Erst die Daten für die SPielrunde --> Scheissarchitektur ;) if (sb.AnzahlDeckel == 0) { sb.Dabei = false; } //Zwischen UcMitspieler und Spieler unterscheiden ucMitspieler ucm = (from ucMitspieler item in _MainWindow.Computerspieler where item.Spieler.NameSpieler.Equals("") select item).FirstOrDefault(); if (ucm != null) // Es handelt sich um einen ucMitspieler { if (ucm.Spieler.AnzahlDeckel == 0) { ucm.Spieler.Dabei = false; } } else //Es handelt sich um den Spieler { if (_MainWindow.Spieler.Spieler.AnzahlDeckel == 0) { _MainWindow.Spieler.Spieler.Dabei = false; } } } }
public void Start() { //Der Spieler beginnt Wurfrunde = new WurfRunde(); Wurfrunde.AnzahlWuerfe = 3; int CounterWegenAnzahlWuerfe = 0; foreach (SpielerBase spieler in AlleMitspieler) { if (spieler.NameSpieler.Equals("Spieler")) { if (spieler.Dabei) { //Der User würfelt selber WuerfelDialog dialog = new WuerfelDialog(Wurfrunde.AnzahlWuerfe); if (dialog.ShowDialog() == true) { spieler.Wurf = dialog.Wurf; _MainWindow.Spieler.SetCubeImages(dialog.Wurf); _MainWindow.Spieler.lblSpielername.Content = Wuerfe.Wurfbezeichnungen[Array.IndexOf(Wuerfe.WuerfeListe, spieler.Wurf)]; SortiereWurfInWurfrundeEin(spieler.Wurf, spieler); } } } else { if (spieler.Dabei) { //Der COmputer würfelt //Welcher SPieler? ucMitspieler aktSpieler = (from ucMitspieler spl in _MainWindow.Computerspieler where spl.Spieler.NameSpieler.Equals(spieler.NameSpieler) select spl).FirstOrDefault(); //TODO, das hier ist vorläufig. An diese STelle kommt noch eine Methode mit der Würfellogik für den Computerspieler spieler.Wurf = Wuerfeln.Wuerfle(3); aktSpieler.SetCubeImages(spieler.Wurf); aktSpieler.lblWurfbezeichnung.Content = Wuerfe.Wurfbezeichnungen[Array.IndexOf(Wuerfe.WuerfeListe, spieler.Wurf)]; SortiereWurfInWurfrundeEin(spieler.Wurf, spieler); } } CounterWegenAnzahlWuerfe++; } //Alle haben gewürfelt --> Bewerten if (Bewerte()) { //Die aktuelle Wuerfelrunde ist vorbei! WeiterDialog d = new WeiterDialog(); if (d.ShowDialog() == true) { _MainWindow.ResetSpielerFuerWurfrunde(); _MainWindow.UpdateSpieler(true); ResetRunde(); ReStart(); } } else { //Dialog, um weiter zu würfeln WeiterDialog d = new WeiterDialog(); if (d.ShowDialog() == true) { _MainWindow.ResetSpielerFuerWurfrunde(); ReStart(); } } }
//Die Wurfrunde auswerten und die Deckel verteilen public bool Bewerte() { int anzahlDeckelWurf = Wuerfe.Wurfwerte[Wurfrunde.HoechsterWurfWert.Item1]; SpielerBase looser = Wurfrunde.NiedrigsterWurfWert.Item2; bool schockAus = false; //Schock aus abfangen if (anzahlDeckelWurf == 13) { schockAus = true; _MainWindow.Mitspieler1.SetStapelImage(0); _MainWindow.Mitspieler2.SetStapelImage(0); _MainWindow.Mitspieler3.SetStapelImage(0); _MainWindow.Mitspieler4.SetStapelImage(0); _MainWindow.Spieler.SetStapelImage(0); foreach (var item in AlleMitspieler) { item.Dabei = false; } } if (AnzahlDeckelStapel > 0) {//Es werden Deckel vom Stapel verteilt //es gibt weniger Deckel auf dem Stapel als für den Wurf if (AnzahlDeckelStapel < anzahlDeckelWurf) { anzahlDeckelWurf = AnzahlDeckelStapel; } //Deckel vom Stapel abziehen und Bild setzen AnzahlDeckelStapel = AnzahlDeckelStapel - anzahlDeckelWurf; _MainWindow.Anzeige.ImgStapel.Source = SetStapelImage(AnzahlDeckelStapel); //Zwischen Mitspieler und Spieler unterscheiden if (looser.NameSpieler.Equals("Spieler")) { SpielerBase sb = (from SpielerBase player in AlleMitspieler where player.NameSpieler.Equals(looser.NameSpieler) select player).First(); sb.AnzahlDeckel += anzahlDeckelWurf; if (schockAus) { sb.Dabei = true; _MainWindow.Spieler.SetStapelImage(13); } else { _MainWindow.Spieler.SetStapelImage(sb.AnzahlDeckel); } } else { SpielerBase sb = (from SpielerBase player in AlleMitspieler where player == looser select player).First(); sb.AnzahlDeckel += anzahlDeckelWurf; ucMitspieler aktSpieler = (from ucMitspieler spl in _MainWindow.Computerspieler where spl.Spieler.NameSpieler.Equals(looser.NameSpieler) select spl).FirstOrDefault(); if (schockAus) { aktSpieler.ImgDeckelUser.Source = SetStapelImage(13); aktSpieler.Spieler.Dabei = true; } else { aktSpieler.ImgDeckelUser.Source = SetStapelImage(sb.AnzahlDeckel); } } //Checken, ob Stapel nicht gerade leer wurde... if (AnzahlDeckelStapel == 0) { CheckMitSpielerDabei(); } } else //Die SPieler verteilen untereinander //TODO AB HIER WEITER --> SPieler verteilen Deckel { VerteileUntereinander(); CheckMitSpielerDabei(); } //Die Anzeige im WIndow aktualisieren _MainWindow.UpdateSpieler(); //TODO SetTextANzeige noch um Parameter ergänzen, welcher Text usw... if (!CheckRundeVorbei()) { SetTextAnzeige(looser.NameSpieler, anzahlDeckelWurf); return(false); } else { return(true); } }