/// <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(); }
public async Task ResumeGameAsync() { var gameHistoryEntry = GameHistory.Last(); Game.SetPreview(gameHistoryEntry.History.Last().BoardState); await PlayGameAsync(gameHistoryEntry); }
public GameState GetActualGameState() { var st = GameHistory?.Last()?.GameState; if (!string.IsNullOrEmpty(st)) { var state = JsonConvert.DeserializeObject <GameState>(st); return(state); } else { return(null); } }