public Spielfeld(IEnumerable <ISpieler> spieler) { Spieler = spieler.ToDictionary(s => s.Socket, s => s); InitStapel(); Austeilen(); GelegteKarten.Add(Stapel.Dequeue()); AktiverSpieler = Spieler.Values.First(); }
public void SetSpieler(ISpieler spieler1, ISpieler spieler2) { if (spieler1 == null) { throw new ArgumentNullException(nameof(spieler1)); } if (spieler2 == null) { throw new ArgumentNullException(nameof(spieler2)); } this.spieler1 = spieler1; this.spieler2 = spieler2; }
public void SpielEnde() { List <ISpieler> AlleSpielerImSpiel = AllSpieler.Concat(FertigeSpieler).ToList(); foreach (ISpieler sp in AlleSpielerImSpiel) { if (sp.Karten.Count > 0) { sp.Karten.RemoveAll(x => (true)); } } AllSpieler.RemoveRange(0, AllSpieler.Count - 1); FertigeSpieler.RemoveRange(0, FertigeSpieler.Count - 1); Stapel.Clear(); GelegteKarten.RemoveRange(0, GelegteKarten.Count - 1); AllSpieler = AlleSpielerImSpiel; for (int i = 0; i < AllSpieler.Count; i++) { object ki = AllSpieler.Where(x => x.Ki == true).FirstOrDefault(); if (ki != null) { AllSpieler.Remove(AllSpieler.Where(x => x.Ki == true).FirstOrDefault()); i--; } } foreach (ISpieler qwe in AllSpieler) { qwe.Spielstarten = false; var obj = new { spielEnde = true }; var json = new JavaScriptSerializer().Serialize(obj); qwe.Socket.Send(json); } if (AllSpieler.Count > 1) { ISpieler ersterSpieler = AllSpieler.First(); while (ersterSpieler.Spielstarten != true) { Thread.Sleep(200); } SpielStart(); } }
public void SetSpieler(ISpieler spieler1, ISpieler spieler2) { this.spieler1 = spieler1; this.spieler2 = spieler2; }
private void WechsleSpieler() { aktueller_spieler = aktueller_spieler == Spieler1 ? Spieler2 : Spieler1; }
private void Spielzug() { if (AllSpieler.Count == 1) { SpielNeustart(); } AktiverSpieler = AllSpieler.First(); if (AktiverSpieler.Aussetzen == true) { if (AktiverSpieler.Ki == true) { ((KI)AktiverSpieler).Aussetzen = false; } else { ((Spieler)AktiverSpieler).Aussetzen = false; } NächsterSpieler(); } foreach (ISpieler temp in AllSpieler) { if (temp.Ki == false) { if (temp == AktiverSpieler) { temp.TeileSpielStand(GelegteKarten.Last(), true, AllSpieler); } else { temp.TeileSpielStand(GelegteKarten.Last(), false, AllSpieler); } } } if (AktiverSpieler.Ki) { Stopwatch st = new Stopwatch(); st.Start(); while (st.ElapsedMilliseconds < 1500) { } st.Stop(); } NichtGelegt = true; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); while (stopWatch.ElapsedMilliseconds < 20000 && NichtGelegt) { if (AktiverSpieler.Ki == true) { KIMachtZug(); break; } else if (AktiverSpieler.CardIndex != null) { IKarte gelegteKarteSpieler = AktiverSpieler.Karten[(int)AktiverSpieler.CardIndex]; if (VersuchtKarteLegen(gelegteKarteSpieler)) { if (gelegteKarteSpieler.Farbe == KartenFarbe.Schwarz || gelegteKarteSpieler.Typ == KartenTyp.VierZiehen) { int blauCounter = 0; int rotCounter = 0; int gelbCounter = 0; int grünCounter = 0; foreach (IKarte zk in AktiverSpieler.Karten) { switch (zk.Farbe) { case KartenFarbe.Gelb: gelbCounter++; break; case KartenFarbe.Rot: rotCounter++; break; case KartenFarbe.Blau: blauCounter++; break; case KartenFarbe.Gruen: grünCounter++; break; default: break; } } if (blauCounter > rotCounter && blauCounter > grünCounter && blauCounter > gelbCounter) { gelegteKarteSpieler.Farbe = KartenFarbe.Blau; } else if (rotCounter > blauCounter && rotCounter > grünCounter && rotCounter > gelbCounter) { gelegteKarteSpieler.Farbe = KartenFarbe.Rot; } else if (grünCounter > rotCounter && grünCounter > blauCounter && grünCounter > gelbCounter) { gelegteKarteSpieler.Farbe = KartenFarbe.Gruen; } else { gelegteKarteSpieler.Farbe = KartenFarbe.Gelb; } if (gelegteKarteSpieler.Typ == KartenTyp.VierZiehen) { vierziehenAktiv = true; KartenZiehen += 4; } LegtKarte(gelegteKarteSpieler); } else { LegtKarte(gelegteKarteSpieler); } break; } else { if (vierziehenAktiv) { for (int i = 0; i < KartenZiehen; i++) { GenugKartenImStapel(); AktiverSpieler.ZiehtKarte(Stapel); } KartenZiehen = 0; vierziehenAktiv = false; ((Spieler)AktiverSpieler).Ziehen = false; ((Spieler)AktiverSpieler).CardIndex = null; } else { if (AktiverSpieler.Ziehen == true) { break; } GenugKartenImStapel(); AktiverSpieler.ZiehtKarte(Stapel); ((Spieler)AktiverSpieler).CardIndex = null; } NächsterSpieler(); } } } if (GelegteKarten.Last().Typ == KartenTyp.Ziehen && !NichtGelegt) { if (AllSpieler[1].Ki) { ((KI)AllSpieler[1]).Ziehen = true; } else { ((Spieler)AllSpieler[1]).Ziehen = true; } if (AktiverSpieler.Ki) { ((KI)AktiverSpieler).Ziehen = false; } else { ((Spieler)AktiverSpieler).Ziehen = false; } KartenZiehen += 2; } else if (KartenZiehen != 0) { if (NichtGelegt) { for (int i = 0; i < KartenZiehen; i++) { GenugKartenImStapel(); AktiverSpieler.ZiehtKarte(Stapel); } vierziehenAktiv = false; KartenZiehen = 0; if (AktiverSpieler.Ki) { ((KI)AktiverSpieler).Ziehen = false; } else { ((Spieler)AktiverSpieler).Ziehen = false; } } } else if (KartenZiehen == 0 && NichtGelegt) { GenugKartenImStapel(); AktiverSpieler.ZiehtKarte(Stapel); } stopWatch.Stop(); if (AktiverSpieler.Karten.Count == 0) { SpielerGewinnt(); AktiverSpieler.HastGewonnen(); Spielzug(); } if (AllSpieler.Count > 1) { if (!AktiverSpieler.Ki) { ((Spieler)AktiverSpieler).CardIndex = null; } NächsterSpieler(); } }