private string LoadGame()
        {
            Console.Clear();

            var list = GameUI.DisplaySavedGames(Engine.GetAllSavedGameStates().Result);

            Console.WriteLine("Enter the id of the saved game or press M to go back");
            Console.Write(">");
            var consoleLine = Console.ReadLine();

            if (consoleLine == null)
            {
                return("M");
            }

            foreach (var save in list)
            {
                if (save.GameStateId.ToString().Equals(consoleLine))
                {
                    GameState = Engine.GetSavedState(save.GameStateId);
                    StartGame();
                }
                else if (consoleLine.Equals("M"))
                {
                    return("M");
                }
            }

            return("STARTED");
        }
        private string StartGame()
        {
            var firstMove = true;

            var done = false;

            do
            {
                GameUI.PrintBoard(GameState);

                int  userXint;
                bool userCanceled;

                (userXint, userCanceled) = GetUserIntInput("Enter X coordinate", 1, 7, 0);
                if (userCanceled)
                {
                    done = true;
                }
                else
                {
                    try
                    {
                        GameState = Engine.UpdateGameState(GameState.StateId, userXint - 1).Result;
                    }
                    catch (GameException e)
                    {
                        Console.WriteLine("This column is full!");
                    }
                }

                if (GameState.Winner != GameState.Win.NO_WINNER)
                {
                    done = true;
                }
            } while (!done);
            Console.Clear();
            var winner = Engine.GetWinnerName(GameState.Winner).Result;

            if (GameState.Winner == GameState.Win.DRAW)
            {
                Console.WriteLine("There has been a draw!");
            }
            else
            {
                Console.WriteLine(winner + " has won!");
            }
            Console.WriteLine("Press enter to continue");
            var consoleLine = Console.ReadLine();

            if (consoleLine != "")
            {
                ;
            }
            Console.Clear();
            return("GAME OVER!!");
        }
 private string AiSecondGame()
 {
     GameState = Engine.CreateGameStateWithGameMode(GameMode.HUMAN_FIRST).Result;
     StartGame();
     return("Started");
 }
 private string PVPGame()
 {
     GameState = Engine.CreateGameStateWithGameMode(GameMode.HUMAN_VS_HUMAN).Result;
     StartGame();
     return("Started");
 }
 private string AiFirstGame()
 {
     GameState = Engine.CreateGameStateWithGameMode(GameMode.AI_FIRST).Result;
     StartGame();
     return("Started");
 }