/// <summary> /// GUI logic for a turn /// </summary> /// <param name="Result">Result of Turn()</param> /// <returns>If a button should be active</returns> private void evaluateTurn(TurnResult Result) { switch (Result) // wertet den Parameter Result aus { case TurnResult.Valid: // wenn der zug gültig war redrawField(); // spielfeld aktualisieren Message = $"Spieler {(logic.GetCurrentPlayer() ? "X" : "O")} ist am Zug"; break; case TurnResult.Win: // wenn der zug zum sieg geführt hat redrawField(); // spielfeld aktualisieren Message = $"Sieg! Spieler {(logic.GetCurrentPlayer() ? "X" : "O")} hat gewonnen"; // nachricht ausgeben das der aktuelle spieler gewonnen hat // alle button deaktivieren, da das Spiel vorbei ist foreach (var item in buttonArray) { item.IsEnabled = false; } break; case TurnResult.Tie: // wenn der zug zu einem unentschieden geführt hat redrawField(); // spielfeld aktualisieren Message = "Unentschieden!"; // Spieler benachrichtigen break; default: // wenn der zug ungültig war (sollte nicht auftreten) Message = "Das war nix"; break; } }
/// <summary> /// Standard Construktor, prepares a new game. /// </summary> public MainWindow() { InitializeComponent(); // läd die XAML datei und erstellt die hinterlegten komponenten. Code immer erst danach einfügen. logic = new(); // Die Spiellogik wird erstellt DataContext = this; // alle buttons welche als Spielfeld verwendet werden werden zusätzlich noch in einem Array // abgelegt damit wir sie bequem mit schleifen und koordinaten ansprechen können buttonArray = new Button[3, 3]; buttonArray[0, 0] = grdFieldButtons.Children[0] as Button; buttonArray[0, 1] = grdFieldButtons.Children[1] as Button; buttonArray[0, 2] = grdFieldButtons.Children[2] as Button; buttonArray[1, 0] = grdFieldButtons.Children[3] as Button; buttonArray[1, 1] = grdFieldButtons.Children[4] as Button; buttonArray[1, 2] = grdFieldButtons.Children[5] as Button; buttonArray[2, 0] = grdFieldButtons.Children[6] as Button; buttonArray[2, 1] = grdFieldButtons.Children[7] as Button; buttonArray[2, 2] = grdFieldButtons.Children[8] as Button; Message = $"Spieler {(logic.GetCurrentPlayer() ? "X" : "O")} ist am Zug"; soundMusic = new(); soundMusic.Open(new Uri(Directory.GetParent(Environment.CommandLine) + @"\ShaolinDub-HarpDubz.mp3", UriKind.Absolute)); }