Example #1
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
        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();
        }