Example #1
0
        static void Main(string[] agrs)
        {
            Console.WriteLine("The program demonstrates how different " +
                              "blackjack strategies affect a player's balance.\n");

            int gameCounter = 10000;

            // WinningStrategyBot statistic

            var winningBot = new WinningStrategyBot(x => x > 40, 1000);
            var collector  = new StatisticCollector(winningBot, "Winning strategy");

            collector.Collect(gameCounter);
            collector.Show();

            // HiLowStrategyBot statistic

            var hiLowBot = new HiLowStrategyBot((x) => x > 40, 1000);

            collector = new StatisticCollector(hiLowBot, "HiLow strategy");
            collector.Collect(gameCounter);
            collector.Show();

            // HiOptIIStrategyBot statistic

            var hiOptIIBot = new HiOptIIStrategyBot((x) => x > 40, 1000);

            collector = new StatisticCollector(hiOptIIBot, "HiOptIIStrategyBot");
            collector.Collect(gameCounter);
            collector.Show();

            Console.WriteLine("That's all! Thank you!");
            return;
        }
Example #2
0
        public void ConstructorTest()
        {
            // first case

            var firstBot = new HiOptIIStrategyBot(x => false, initialBet);

            Assert.IsFalse(firstBot.IsLeave());
            Assert.IsTrue(firstBot.Hands != null);
            Assert.IsTrue(firstBot.Cash == initialBet);
            Assert.IsTrue(firstBot.Flag == PlayerState.Play);

            // second case

            var secondBot = new HiLowStrategyBot(x => false, initialBet);

            Assert.IsFalse(secondBot.IsLeave());
            Assert.IsTrue(secondBot.Hands != null);
            Assert.IsTrue(secondBot.Cash == initialBet);
            Assert.IsTrue(secondBot.Flag == PlayerState.Play);
        }
        public void ConstructorTest()
        {
            // first case

            int minBet         = 6;
            var firstBot       = new WinningStrategyBot();
            var firstGameTable = new GameTable(firstBot, minBet);

            Assert.IsNotNull(firstGameTable);
            Assert.IsNotNull(firstGameTable.Dealer);
            Assert.IsNotNull(firstGameTable.Player);
            Assert.IsNotNull(firstGameTable.GameDeck);
            Assert.AreSame(firstBot, firstGameTable.Player);
            Assert.AreEqual(firstGameTable.MinBet, minBet);

            // second case

            var secondBot       = new HiLowStrategyBot();
            var secondGameTable = new GameTable(secondBot, minBet);

            Assert.IsNotNull(secondGameTable);
            Assert.IsNotNull(secondGameTable.Dealer);
            Assert.IsNotNull(secondGameTable.Player);
            Assert.IsNotNull(secondGameTable.GameDeck);
            Assert.AreSame(secondBot, secondGameTable.Player);
            Assert.AreEqual(secondGameTable.MinBet, minBet);

            // third case

            var thirdBot       = new HiOptIIStrategyBot();
            var thirdGameTable = new GameTable(thirdBot, minBet);

            Assert.IsNotNull(thirdGameTable);
            Assert.IsNotNull(thirdGameTable.Dealer);
            Assert.IsNotNull(thirdGameTable.Player);
            Assert.IsNotNull(thirdGameTable.GameDeck);
            Assert.AreSame(thirdBot, thirdGameTable.Player);
            Assert.AreEqual(thirdGameTable.MinBet, minBet);
        }
        public void ConstructorTest()
        {
            // first case

            var firstBot = new WinningStrategyBot();

            Assert.IsFalse(firstBot.IsLeave());
            Assert.IsTrue(firstBot.GamePlayed == 0);
            Assert.IsTrue(firstBot.Hands != null);
            Assert.IsTrue(firstBot.Cash == 1000);
            Assert.IsTrue(firstBot.Flag == Player.PlayerState.Play);


            // second case

            var secondBot = new HiOptIIStrategyBot();

            Assert.IsTrue(secondBot.GamePlayed == 0);
            Assert.IsFalse(secondBot.IsLeave());
            Assert.IsTrue(secondBot.Hands != null);
            Assert.IsTrue(secondBot.Cash == 1000);
            Assert.IsTrue(secondBot.Flag == Player.PlayerState.Play);
        }
        public void MakeBetTest()
        {
            // preparetion

            int initialBet = 100;
            var bot        = new HiOptIIStrategyBot(initialBet)
            {
                Flag = PlayerState.Stop
            };
            var botHand = bot.Hands[0];

            botHand.Cards = Tools.CreateCardSet(CardRank.Ten);

            List <Card> dealerCards = Tools.CreateCardSet(CardRank.Ace, CardRank.Two);

            int minBet  = 10;
            int betUnit = 2 * minBet;

            // checking bet when realScore < 0

            bot.Play(botHand, dealerCards);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit / 2);

            // checking bet when 0 <= realScore < 1

            botHand.Cards = Tools.CreateCardSet(CardRank.Four);
            dealerCards   = Tools.CreateCardSet(CardRank.Five);

            Tools.RepeatPlay(bot, dealerCards, 3);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit);

            // checking bet when 1 <= realScore < 2

            Tools.RepeatPlay(bot, dealerCards, 1);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit * 2);

            // checking bet when 2 <= realScore < 3

            Tools.RepeatPlay(bot, dealerCards, 1);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit * 4);

            // checking bet when 3 <= realScore < 4

            Tools.RepeatPlay(bot, dealerCards, 1);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit * 6);

            // checking bet when 4 <= realScore < 5

            Tools.RepeatPlay(bot, dealerCards, 1);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit * 8);

            // checking bet when 5 <= realScore < 6

            Tools.RepeatPlay(bot, dealerCards, 1);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit * 10);

            // checking bet when realScore >= 6

            Tools.RepeatPlay(bot, dealerCards, 1);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit * 12);
        }