public void Given_Options_2PiecToChose_and_1Chosen() { var color = (GameColor)0; var diceResult = 6; var input = new StringReader("2"); Console.SetIn(input); var output = new StringWriter(); Console.SetOut(output); var expectedOutput = $"Choose your game piece:\r\n" + $"1) Piece number: 1 at base\r\n" + $"2) Piece number: 4 at position 16\r\n"; var gamePiece = InputDialogs.GetGamePieceToMove(GamePieces, color, diceResult); Assert.AreEqual(expectedOutput, output.ToString()); Assert.AreEqual(GamePieces[3], gamePiece); }
public void PlayGame() { if (Game.GamePlayers.Players.FindAll(p => p.Type == (PlayerType)1).Count > 0) { AI = new GameAI(Board, Game.PieceSetup, Dice); } var alive = true; while (alive && Game.Winer == null) { var playerChoise = InputDialogs.GetPlayerMenuChoise(Game, Board); switch (playerChoise) { case "1": Dice.ThrowDice(Game.NextPlayer.Color); //animation (true if color param) GamePiece gamePieceToMove = null; if (Game.NextPlayer.Type == (PlayerType)1) { gamePieceToMove = AI.ChoosePieceToMove(Game.NextPlayer.Color, Dice.Result); } else { gamePieceToMove = InputDialogs.GetGamePieceToMove(Game.PieceSetup, Game.NextPlayer.Color, Dice.Result); } CreateMove(gamePieceToMove); if (Game.Moves.Last().Piece != null) { ExecuteMove(); } break; case "2": FileHandler.WriteToFile($"{Game.GameName}_{Game.LudoGameId}", Game); Console.WriteLine($"Game saved to file {Game.GameName}_{Game.LudoGameId}.json"); Console.ReadKey(); break; case "3": //Spel är uppdaterat i basen alive = false; break; } if (alive) { if (Dice.Result != 6) { var currentPlayerIndex = Game.GamePlayers.Players.IndexOf(Game.NextPlayer); var nextTurnPlayerIndex = (currentPlayerIndex + 1) % (Game.GamePlayers.Players.Count()); Game.NextPlayer = Game.GamePlayers.Players[nextTurnPlayerIndex]; } else { Console.WriteLine("Congratulations you can roll again!"); if (Game.NextPlayer.Type == (PlayerType)1) { Thread.Sleep(1000); } else { Console.ReadKey(); } } if (DbConnectionIsActive) { var db = new LudoGameDbContext(); DbTransactionWrapper(db, db => SaveMoveToDataBase(db)); } } } if (Game.Winer != null) { Console.WriteLine($"{Game.Winer} wins!"); Console.ReadKey(); } }