public static bool CreateNewGame() { Console.Clear(); var selectedOption = Menu.ShowMenu("Select the number of players:", new List <string> { "2", "3", "4" }); int numberOfPlayers = 2; switch (selectedOption) { case 0: break; case 1: numberOfPlayers = 3; break; case 2: numberOfPlayers = 4; break; } Console.WriteLine("Enter name of board:"); var boardName = Console.ReadLine(); var board = GameFactory.CreateBoard(boardName); // Return new board board.Players = AddPlayers(numberOfPlayers, board); // Add all players to list bool exit = Action.StartGame(board); // Start Game and wait for exit to return return(exit); }
public void Player_Name_Should_Be_Liam_And_Have_4_Tokens_Of_Color_Green() { var board = GameFactory.CreateBoard("myTestBoard"); var player = GameFactory.NewPlayer("Liam", board, TokenColor.Green); Assert.Equal(4, player.Tokens.Count); Assert.Equal(TokenColor.Green, player.Tokens[0].Color); Assert.Equal("Liam", player.Name); }
public void Move_Cant_Move_Inactive_Token_If_1_On_Dice() { var board = GameFactory.CreateBoard("myTestBoard"); var greenPlayer = GameFactory.NewPlayer("greenPlayer", board, TokenColor.Green); int dice = 1; string result = greenPlayer.Tokens[1].Move(board, greenPlayer, dice); Assert.True(!greenPlayer.Tokens[1].IsActive); Assert.Equal("You can't move this token out of the base because the dice didn't hit 6!", result); }
public void Only_First_Token_Should_Be_Active_At_Creation() { var board = GameFactory.CreateBoard("myTestBoard"); var player = GameFactory.NewPlayer("Liam", board, TokenColor.Blue); Assert.True(player.Tokens[0].IsActive); Assert.False(player.Tokens[1].IsActive); Assert.False(player.Tokens[2].IsActive); Assert.False(player.Tokens[3].IsActive); }
public void Move_Inactive_Token_To_Start_If_Square_Occupied_By_Same_Color() { var board = GameFactory.CreateBoard("myTestBoard"); var greenPlayer = GameFactory.NewPlayer("greenPlayer", board, TokenColor.Green); int dice = 6; string result = greenPlayer.Tokens[1].Move(board, greenPlayer, dice); Assert.True(greenPlayer.Tokens[1].IsActive); Assert.Equal("You made a move!", result); Assert.Equal(2, board.Squares[14].Occupants.Count); }
public void Move_Inactive_Token_If_6_On_Dice_And_Square_Avaliable() { var board = GameFactory.CreateBoard("myTestBoard"); var greenPlayer = GameFactory.NewPlayer("greenPlayer", board, TokenColor.Green); int dice = 6; greenPlayer.Tokens[0].Move(board, greenPlayer, dice); string result = greenPlayer.Tokens[1].Move(board, greenPlayer, dice); Assert.True(greenPlayer.Tokens[1].IsActive); Assert.Equal("You made a move!", result); }
public void Each_Color_Should_Have_Fixed_Starting_Position() { var board = GameFactory.CreateBoard("myTestBoard"); var greenPlayer = GameFactory.NewPlayer("Liam", board, TokenColor.Green); var bluePlayer = GameFactory.NewPlayer("Liam", board, TokenColor.Blue); var yellowPlayer = GameFactory.NewPlayer("Liam", board, TokenColor.Yellow); var redPlayer = GameFactory.NewPlayer("Liam", board, TokenColor.Red); Assert.Equal(TokenColor.Red, board.Squares[0].Occupants[0].Color); Assert.Equal(TokenColor.Green, board.Squares[14].Occupants[0].Color); Assert.Equal(TokenColor.Yellow, board.Squares[28].Occupants[0].Color); Assert.Equal(TokenColor.Blue, board.Squares[42].Occupants[0].Color); }
public void Should_Not_Move_Token_When_Stegs_More_Then_60() { var board = GameFactory.CreateBoard("myTestBoard"); var redPlayer = GameFactory.NewPlayer("redPlayer", board, TokenColor.Red); string result = redPlayer.Tokens[0].Move(board, redPlayer, 61); Square s = board.Squares.First(el => el.Id == 0); Assert.Equal(4, redPlayer.Tokens.Count); Assert.Equal(s.Occupants[0], redPlayer.Tokens[0]); Assert.Equal("Token moves to the home triangle only with an exact roll.", result); }
public void Should_Remove_Token_When_Stegs_Equal_60() { var board = GameFactory.CreateBoard("myTestBoard"); var redPlayer = GameFactory.NewPlayer("redPlayer", board, TokenColor.Red); string result = redPlayer.Tokens[0].Move(board, redPlayer, 60); Square s = board.Squares.First(el => el.Id == 106); Assert.Empty(s.Occupants); Assert.Equal(3, redPlayer.Tokens.Count); Assert.Equal("Token at the finish!", result); }
public void Should_Move_Token_If_Squares_Avaliable_Dice_6_Near_Finish() { var board = GameFactory.CreateBoard("myTestBoard"); var redPlayer = GameFactory.NewPlayer("redPlayer", board, TokenColor.Red); int dice = 57; string result = redPlayer.Tokens[0].Move(board, redPlayer, dice); Square start = board.Squares.Single(el => el.Id == 0); Square end = board.Squares.Single(el => el.Id == 103); Assert.Equal(end.Occupants[0], redPlayer.Tokens[0]); Assert.Empty(start.Occupants); Assert.Equal("You made a move!", result); }
public void Should_Move_Token_If_Square_Occupied_By_Another_Color() { var board = GameFactory.CreateBoard("myTestBoard"); var greenPlayer = GameFactory.NewPlayer("greenPlayer", board, TokenColor.Green); var redPlayer = GameFactory.NewPlayer("redPlayer", board, TokenColor.Red); string result = redPlayer.Tokens[0].Move(board, redPlayer, 14); Assert.False(greenPlayer.Tokens[0].IsActive); Assert.True(redPlayer.Tokens[0].IsActive); Assert.Equal(14, redPlayer.Tokens[0].Steps); Assert.Equal(TokenColor.Red, board.Squares[14].Occupants[0].Color); Assert.Equal("Push! You made a move!", result); }
public void Move_Inactive_Token_If_6_On_Dice_And_Square_Occupied_By_Another_Color() { var board = GameFactory.CreateBoard("myTestBoard"); var greenPlayer = GameFactory.NewPlayer("greenPlayer", board, TokenColor.Green); var redPlayer = GameFactory.NewPlayer("redPlayer", board, TokenColor.Red); greenPlayer.Tokens[0].Move(board, redPlayer, 1); redPlayer.Tokens[0].Move(board, redPlayer, 14); string result = greenPlayer.Tokens[1].Move(board, greenPlayer, 6); Assert.True(greenPlayer.Tokens[1].IsActive); Assert.Equal("Push! You made a move!", result); Assert.False(redPlayer.Tokens[0].IsActive); Assert.Equal(0, redPlayer.Tokens[0].Steps); Assert.Equal(greenPlayer.Tokens[1], board.Squares[14].Occupants[0]); }
public void Should_Not_Move_Token_If_Route_Is_Blocked_By_Opponent() { var board = GameFactory.CreateBoard("myTestBoard"); var redPlayer = GameFactory.NewPlayer("redPlayer", board, TokenColor.Red); var greenPlayer = GameFactory.NewPlayer("greenPlayer", board, TokenColor.Green); redPlayer.Tokens[0].Move(board, redPlayer, 16); redPlayer.Tokens[1].Move(board, redPlayer, 6); redPlayer.Tokens[1].Move(board, redPlayer, 16); string result = greenPlayer.Tokens[0].Move(board, greenPlayer, 6); Square s14 = board.Squares.Single(el => el.Id == 14); Square s16 = board.Squares.Single(el => el.Id == 16); Assert.Equal(2, s16.Occupants.Count); Assert.Equal(greenPlayer.Tokens[0], s14.Occupants[0]); Assert.Equal("Route is blocked!", result); }
public void Board_Should_Have_4_Starting_Tokens() { var board = GameFactory.CreateBoard("myTestBoard"); var green = GameFactory.NewPlayer("Liam", board, TokenColor.Green); var blue = GameFactory.NewPlayer("Liam", board, TokenColor.Blue); var yellow = GameFactory.NewPlayer("Liam", board, TokenColor.Yellow); var red = GameFactory.NewPlayer("Liam", board, TokenColor.Red); board.Squares[14].Occupants.Add(green.Tokens[0]); // Set start pos board.Squares[42].Occupants.Add(blue.Tokens[0]); board.Squares[28].Occupants.Add(yellow.Tokens[0]); board.Squares[0].Occupants.Add(red.Tokens[0]); Assert.True(board.Squares[0].Occupants[0].IsActive); Assert.True(board.Squares[14].Occupants[0].IsActive); Assert.True(board.Squares[28].Occupants[0].IsActive); Assert.True(board.Squares[42].Occupants[0].IsActive); }
public void Should_Not_Move_Token_If_There_are_Two_Tokens_On_It() { var board = GameFactory.CreateBoard("myTestBoard"); var redPlayer = GameFactory.NewPlayer("redPlayer", board, TokenColor.Red); redPlayer.Tokens[0].Move(board, redPlayer, 16); redPlayer.Tokens[1].Move(board, redPlayer, 6); redPlayer.Tokens[1].Move(board, redPlayer, 16); redPlayer.Tokens[2].Move(board, redPlayer, 6); redPlayer.Tokens[2].Move(board, redPlayer, 14); string result = redPlayer.Tokens[2].Move(board, redPlayer, 2); Square s14 = board.Squares.Single(el => el.Id == 14); Square s16 = board.Squares.Single(el => el.Id == 16); Assert.Equal(2, s16.Occupants.Count); Assert.Equal(redPlayer.Tokens[2], s14.Occupants[0]); Assert.Equal("Route is blocked!", result); }
public void Should_Move_Token_If_Route_Is_Blocked_By_Same_Color() { var board = GameFactory.CreateBoard("myTestBoard"); var redPlayer = GameFactory.NewPlayer("redPlayer", board, TokenColor.Red); redPlayer.Tokens[0].Move(board, redPlayer, 16); redPlayer.Tokens[1].Move(board, redPlayer, 6); redPlayer.Tokens[1].Move(board, redPlayer, 16); redPlayer.Tokens[2].Move(board, redPlayer, 6); redPlayer.Tokens[2].Move(board, redPlayer, 14); string result = redPlayer.Tokens[2].Move(board, redPlayer, 6); Square s16 = board.Squares.Single(el => el.Id == 16); Square s20 = board.Squares.Single(el => el.Id == 20); Assert.Equal(2, s16.Occupants.Count); Assert.Equal(redPlayer.Tokens[2], s20.Occupants[0]); Assert.Equal("You made a move!", result); }
public void Save_Board_To_DB() { using var db = new TestDatabase(); using var context = db.CreateContext(); var board = GameFactory.CreateBoard("myTestBoard"); board.Id = 2; var greenPlayer = GameFactory.NewPlayer("greenPlayer", board, TokenColor.Green); greenPlayer.Id = 1; board.Players.Add(greenPlayer); board.Players[0].Tokens[0].Id = 1; context.Boards.Add(board); context.SaveChanges(); Assert.Equal(board, context.Boards.Single(b => b.Id == 2)); Assert.Equal(greenPlayer, context.Players.First()); Assert.Equal(board.Players[0].Tokens[0], context.Tokens.First()); }
public void Remove_Board_From_DB() { using var db = new TestDatabase(); using var context = db.CreateContext(); var board = GameFactory.CreateBoard("myTestBoard"); board.Id = 1; var greenPlayer = GameFactory.NewPlayer("greenPlayer", board, TokenColor.Green); greenPlayer.Id = 1; board.Players.Add(greenPlayer); board.Players[0].Tokens[0].Id = 1; context.Boards.Add(board); context.SaveChanges(); context.Boards.Remove(board); context.SaveChanges(); Assert.Null(context.Boards.FirstOrDefault()); Assert.Null(context.Players.FirstOrDefault()); Assert.Null(context.Tokens.FirstOrDefault()); }
public void Board_Should_Have_80_Squares() { var board = GameFactory.CreateBoard("myTestBoard"); Assert.Equal(80, board.Squares.Count); }