private void Prüfe_auf_Gewinn_für_Spieler(IEnumerable<Event> spielzüge, Spielstatusse spieler, Spielstatusse gewinn, Action beiSpielGehtWeiter, Action<Spielstatusse> beiGwinn) { var spielerzüge = spielzüge.Select(e => { var parts = e.Payload.Split(','); return new { Spieler = (Spielstatusse)Enum.Parse(typeof(Spielstatusse), parts[0]), Spielfeldindex = int.Parse(parts[1]) }; }) .Where(e => e.Spieler == spieler) .Select(e => e.Spielfeldindex) .ToList(); spielerzüge.Sort(); if (new[] { new[] {0, 1, 2}, new[] {3, 4, 5}, new[] {6, 7, 8}, new[] {0, 3, 6}, new[] {1, 4, 7}, new[] {2, 5, 8}, new[] {0, 4, 8}, new[] {2, 4, 6} }.Any(g => ArrayEqual(g, spielerzüge.ToArray()))) { _eventStore.Append(Spielevents.EVENT_SPIEL_GEWONNEN, gewinn.ToString()); beiGwinn(gewinn); } else beiSpielGehtWeiter(); }
public Spielstand Spieldstand_generieren(IEnumerable<Event> spielevents, Spielstatusse aktuellerSpieler) { return new Spielstand {Spielbrett = _spielbrett.Spielfelder, Spielstatus = aktuellerSpieler}; }
public void Spielstein_setzen(Spielstatusse spieler, int spielfeldindex) { _eventStore.Append(Spielevents.EVENT_SPIELSTEIN_GESETZT, string.Format("{0},{1}", spieler, spielfeldindex)); }
private void Spielstand_generieren(Spielstatusse spieler) { var spielzüge = _spiel.Spielzüge_des_aktuellen_Spiels_ermittteln(); var spielstand = _map.Spieldstand_generieren(spielzüge, spieler); Spielstand_aktualisiert(spielstand); }