private void KoRunde() { int Spielnummer = (Spielplan.Spieltag.Count == 0) ? 1 : Spielplan.Spieltag.Last().Spiel.Last().Nummer + 1; int AnzahlTeams = Spielplan.Spieltag.Count > 0 ? Spielplan.Spieltag.Last().GetGewinner().Count : Teams.Count; try { Spieltag s = new Spieltag(); if (Spielnummer <= 1) //Erste KO-Runde { for (int i = 0; i < AnzahlTeams / 2; i++) { if (Teams[AnzahlTeams - i - 1].Bezeichnung != "BYE" || Teams[i].Bezeichnung != "BYE") { s.Spiel.Add(new Spiel(Spielnummer, Teams[AnzahlTeams - i - 1], Teams[i], Form)); Spielnummer++; } } } else //n-te KO-Runde { List <Mannschaft> Gewinner = Spielplan.Spieltag.Last().GetGewinner(); for (int i = 0; i < Gewinner.Count / 2; i++) { //Nur Spiel erstellen wenn beide Teams nicht BYE if (Gewinner[i].Bezeichnung != "BYE" && Gewinner[AnzahlTeams - i - 1].Bezeichnung != "BYE") { s.Spiel.Add(new Spiel(Spielnummer, Gewinner[i], Gewinner[AnzahlTeams - i - 1], Form)); Spielnummer++; } } } Spielplan.Hinzufuegen(s); } catch (Exception e) { string FehlerString = AnzahlTeams == 1 ? "Gewinner steht fest" : e.Message; } }
private void Liga() { int Spielnummer = 1; int AnzahlTeams = Teams.Count; //Teams in Zwischencontainer, Letztes Team zu Joker Mannschaft Joker = Teams.Last(); Mannschaft[] TeamsOhneJoker = new Mannschaft[AnzahlTeams - 1]; for (int i = 0; i < AnzahlTeams - 1; i++) { TeamsOhneJoker[i] = Teams[i]; } //Spielplan Liga erstellen for (int n = 1; n < AnzahlTeams; n++) { //Spieltag Liga erstellen Spieltag PaarungenSpieltag = new Spieltag(); Mannschaft[] ContainerA = new Mannschaft[AnzahlTeams / 2]; Mannschaft[] ContainerB = new Mannschaft[AnzahlTeams / 2]; int offset = (AnzahlTeams / 2) - 1; //Zwei Array füllen mit Joker an fester Stelle for (int i = 0; i < AnzahlTeams / 2; i++) { if (i == 0) { ContainerB[i] = Joker; } else { ContainerB[i] = TeamsOhneJoker[AnzahlTeams - 1 - i]; } ContainerA[i] = TeamsOhneJoker[i]; } //Spiele des Spieltag erstellen for (int i = 0; i < AnzahlTeams / 2; i++) { if (ContainerA[i].Bezeichnung != "BYE" && ContainerB[i].Bezeichnung != "BYE") { PaarungenSpieltag.Spiel.Add(new Spiel(Spielnummer, ContainerA[i], ContainerB[i], Form)); Spielnummer++; } } Spielplan.Spieltag.Add(PaarungenSpieltag); //Container Shift clockwise ohne Joker Mannschaft Temp = new Mannschaft(); for (int i = 0; i < TeamsOhneJoker.Length; i++) { if (i == 0) { Temp = TeamsOhneJoker[i]; } else { TeamsOhneJoker[i - 1] = TeamsOhneJoker[i]; } if (i == TeamsOhneJoker.Length - 1) { TeamsOhneJoker[i] = Temp; } } } }
public void ImportXML(string dateipfad) { XmlReader reader = XmlReader.Create(dateipfad); Gruppe g = null; int form = 0; int phase = 0; int AnzahlGewinner = new int(); Spieltag tag = new Spieltag(); Spielplan plan = new Spielplan(); while (reader.Read()) { if (reader.IsStartElement()) { switch (reader.Name) { case "Turnier": Bezeichnung = reader.GetAttribute("Bezeichnung"); form = Convert.ToInt32(reader.GetAttribute("Form")); for (int i = 0; i < reader.AttributeCount - 2; i++) { Teilnehmer.Add(new Mannschaft(reader.GetAttribute("Teilnehmer" + i))); } Form = form; break; case "Teilnehmer": //g.Team.Add(new Mannschaft(reader.GetAttribute("Mannschaft"))); g.Teams.Add(Teilnehmer.Find(x => x.Bezeichnung.Contains(reader.GetAttribute("Mannschaft")))); break; case "Gruppe": AnzahlGewinner = Convert.ToInt32(reader.GetAttribute("AnzahlGewinner")); phase = Convert.ToInt32(reader.GetAttribute("Phase")); plan = new Spielplan(); g = new Gruppe(form, AnzahlGewinner, phase) { Spielplan = plan }; break; case "Spieltag": tag = new Spieltag(); break; case "Spiel": tag.Spiel.Add(new Spiel( Convert.ToInt32(reader.GetAttribute("Nummer")), reader.GetAttribute("TeamA"), reader.GetAttribute("TeamB"), reader.GetAttribute("Ergebnis"), form)); break; } } if (reader.NodeType == XmlNodeType.EndElement) { switch (reader.Name) { case "Turnier": break; case "Teilnehmer": break; case "Gruppe": Gruppen.Add(g); break; case "Spieltag": plan.Hinzufuegen(tag); break; case "Spiel": break; } } } }
public void Hinzufuegen(Spieltag spieltag) { Spieltag.Add(spieltag); }