Пример #1
0
        /// <summary>
        /// Startet - abhängig davon, ob die KI zufällig oder lernend ist- die Funktion MakeTurn des Objektes AI.
        /// Im Anschluss werden die Funktionen für das Spielende, Spielerwechsel und die Aktualisierung der View aufgerufen.
        ///
        /// Speichert die Ausgangslage (GameHistory) und die erfolgte Entscheidung(DecisionHistory) in den entsprechenden Variablen.
        /// </summary>
        /// <param name="learning_AI"> Ist die KI eine lernende KI?</param>
        private void MakeTurn_AI(Boolean learning_AI)
        {
            //aktuelle Spielsituation wird gespeichert
            GameHistory.Add(GameState.Board.Clone() as int[]);

            if (!learning_AI)
            {
                GameState.Board = AI.Random_MakeTurn(GameState.Board, GameState.ActivePlayer);
            }
            else if (learning_AI)
            {
                GameState.Board = AI.Learning_MakeTurn(GameState.Board, GameState.ActivePlayer);
            }

            //Entscheidung der KI wird gespeichert, nachdem der letzte Zug der KI ermittelt wurde.
            for (int i = 0; i < 9; i++)
            {
                if (GameState.Board[i] != GameHistory.Last()[i] &&
                    GameState.Board[i] == GameState.ActivePlayer)
                {
                    DecisionHistory.Add(i);
                }
            }
            TestForEndCondition();
            PlayerChange();
            SendInformationToVM();
        }
Пример #2
0
        public async Task ResumeGameAsync()
        {
            var gameHistoryEntry = GameHistory.Last();

            Game.SetPreview(gameHistoryEntry.History.Last().BoardState);
            await PlayGameAsync(gameHistoryEntry);
        }
Пример #3
0
        public GameState GetActualGameState()
        {
            var st = GameHistory?.Last()?.GameState;

            if (!string.IsNullOrEmpty(st))
            {
                var state = JsonConvert.DeserializeObject <GameState>(st);
                return(state);
            }
            else
            {
                return(null);
            }
        }