public void PlayTurnTest() { Game game = new Game(); FirstBot bot = new FirstBot(game, 1000); bot.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Eight, CardSuit.Diamonds)); bot.PlayTurn(); Assert.AreEqual(bot.Hand.CountPoints(), 19); Assert.AreEqual(bot.Hand.Cards.Count, 2); bot = new FirstBot(game, 1000); bot.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Jack, CardSuit.Diamonds)); bot.PlayTurn(); Assert.AreEqual(bot.Hand.CountPoints(), 21); Assert.AreEqual(bot.Hand.Cards.Count, 2); bot = new FirstBot(game, 1000); bot.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Seven, CardSuit.Diamonds)); bot.PlayTurn(); Assert.AreEqual(bot.Hand.Cards.Count, 3); Assert.Pass(); }
public void FirstBotMakeBetTest(int balance, int result) { Game game = new Game(); FirstBot bot = new FirstBot(game, balance); bot.MakeBet(); Assert.AreEqual(bot.Balance, result); Assert.Pass(); }
public void HitTest() { Game game = new Game(); FirstBot bot = new FirstBot(game, 1000); for (int i = 0; i < 10; i++) { bot.Hit(); } Assert.AreEqual(bot.Hand.Cards.Count, 10); Assert.Pass(); }
public void PlayerFinishTest() { Game game = new Game(); FirstBot bot = new FirstBot(game, 1000); Croupier croupier = game.Croupier; bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Diamonds)); bot.Hand.Cards.Add(new Card(CardRank.Seven, CardSuit.Diamonds)); bot.Finish(); Assert.AreEqual(bot.Balance, 950); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Diamonds)); bot.Hand.Cards.Add(new Card(CardRank.Six, CardSuit.Diamonds)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); croupier.Hand.Cards.Add(new Card(CardRank.Ten, CardSuit.Clubs)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 1000); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); bot.Hand.Cards.Add(new Card(CardRank.Ten, CardSuit.Clubs)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Clubs)); croupier.Hand.Cards.Add(new Card(CardRank.Ten, CardSuit.Spades)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 1000); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); bot.Hand.Cards.Add(new Card(CardRank.Ten, CardSuit.Clubs)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Clubs)); croupier.Hand.Cards.Add(new Card(CardRank.Seven, CardSuit.Spades)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 1025); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Diamonds)); bot.Hand.Cards.Add(new Card(CardRank.Six, CardSuit.Diamonds)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); croupier.Hand.Cards.Add(new Card(CardRank.Four, CardSuit.Clubs)); croupier.Hand.Cards.Add(new Card(CardRank.Six, CardSuit.Spades)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 1000); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Diamonds)); bot.Hand.Cards.Add(new Card(CardRank.Six, CardSuit.Diamonds)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); croupier.Hand.Cards.Add(new Card(CardRank.Seven, CardSuit.Clubs)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 1025); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Diamonds)); bot.Hand.Cards.Add(new Card(CardRank.Four, CardSuit.Diamonds)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); croupier.Hand.Cards.Add(new Card(CardRank.Eight, CardSuit.Clubs)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 1000); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Diamonds)); bot.Hand.Cards.Add(new Card(CardRank.Four, CardSuit.Diamonds)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); croupier.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Clubs)); croupier.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Diamonds)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 1025); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Diamonds)); bot.Hand.Cards.Add(new Card(CardRank.Four, CardSuit.Diamonds)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); croupier.Hand.Cards.Add(new Card(CardRank.Seven, CardSuit.Clubs)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 1025); bot = new FirstBot(game, 1000); bot.MakeBet(); bot.Hand.Cards.Add(new Card(CardRank.King, CardSuit.Clubs)); bot.Hand.Cards.Add(new Card(CardRank.Five, CardSuit.Diamonds)); croupier.Hand.Cards.Add(new Card(CardRank.Ace, CardSuit.Spades)); croupier.Hand.Cards.Add(new Card(CardRank.Seven, CardSuit.Clubs)); bot.Finish(); croupier.Finish(); Assert.AreEqual(bot.Balance, 950); Assert.Pass(); }
static void Main(string[] args) { Console.WriteLine( @"Choose bots to play with. -""Human Bot"" to play. -""Min Max Bot"" to play a good robot -""Cheat Bot"" to crash the game in 2 turns. -""First Bot"" to play a bot who chooses the first open square. -""Random Bot"" to fight a random bot."); IBot xBot = null; Game game = new Game(); IBot oBot = null; do { string input = Console.ReadLine(); switch (input) { case "Human Bot": xBot = new HumanBot(); break; case "Cheat Bot": xBot = new CheatBot(); break; case "Min Max Bot": xBot = new MinMaxBot(); break; case "First Bot": xBot = new FirstBot(); break; case "Random Bot": xBot = new RandomBot(); break; default: Console.WriteLine("Please pick a type of bot"); break; } } while (xBot == null); Console.WriteLine("Now choose the other player."); do { string input = Console.ReadLine(); switch (input) { case "Human Bot": oBot = new HumanBot(); break; case "Cheat Bot": oBot = new CheatBot(); break; case "Min Max Bot": oBot = new MinMaxBot(); break; case "First Bot": oBot = new FirstBot(); break; case "Random Bot": oBot = new RandomBot(); break; default: Console.WriteLine("Please pick a type of bot"); break; } } while (oBot == null); Console.WriteLine($"{xBot.Name} (X) vs. {oBot.Name} (O)"); while (!game.IsOver) { // Make a copy of the game and give it to the bot. This allows the bot to do // whatever it wants to the copy without messing up our official game. Game botGame = game.Copy(); IBot bot = game.IsXTurn ? xBot : oBot; Tuple <int, int> move = bot.GetMove(botGame); game.Mark(move.Item1, move.Item2); Console.WriteLine($"{bot.Name} selected ({move.Item1}, {move.Item2})"); Console.WriteLine(game.Board.ToString()); } if (game.IsXWin) { Console.WriteLine($"{xBot.Name} wins!"); } else if (game.IsOWin) { Console.WriteLine($"{oBot.Name} wins!"); } else if (game.IsTie) { Console.WriteLine($"Game is a tie!"); } else { Console.WriteLine("How did we get here?"); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); }