Ejemplo n.º 1
0
        /// <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;
            }
        }
Ejemplo n.º 2
0
        /// <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));
        }