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);
        }
Beispiel #2
0
        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();
            }
        }