Exemple #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;
        }
Exemple #2
0
        public void PlayTest()
        {
            var bot = new HiLowStrategyBot(initialBet);

            bot.Hands[0].Cards = Tools.CreateCardSet(CardRank.Ace);
            var dealerCards = Tools.CreateCardSet(CardRank.Two);

            Assert.IsTrue(bot.Play(bot.Hands[0], dealerCards) == HandState.Split);
        }
Exemple #3
0
        public void ResetFlagTest()
        {
            var bot = new HiLowStrategyBot(initialBet)
            {
                Flag = PlayerState.DeckReset
            };

            bot.Hands[0].Cards = Tools.CreateCardSet(CardRank.Ace);
            var dealerCards = Tools.CreateCardSet(CardRank.Two);

            Assert.IsTrue(bot.Play(bot.Hands[0], dealerCards) == HandState.Done);
        }
        public void MakeBetTest()
        {
            // preparetion

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

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

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

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

            // checking bet when 0 <= realScore < 2

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

            // checking bet when realScore < 0

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

            // checking bet when 2 <= realScore < 3

            botHand.Cards = Tools.CreateCardSet(CardRank.Two);
            dealerCards   = Tools.CreateCardSet(CardRank.Two);

            Tools.RepeatPlay(bot, dealerCards, 8); // play here just increase realScore

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

            // checking bet when 3 <= realScore < 4

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

            // checking bet when realScore >= 4

            Tools.RepeatPlay(bot, dealerCards, 5);
            bot.MakeBet(minBet);
            Assert.AreEqual(bot.Hands[0].Bet, betUnit * 8);
        }
        public void PlayLongGameTest()
        {
            // preparation

            int minBet             = 5;
            var bot                = new HiLowStrategyBot(x => x > 200, 1000 * minBet);
            var gameTable          = new GameTable(bot, minBet);
            int startAmountOfCards = gameTable.GameDeck.Cards.Count;

            // checking

            Assert.DoesNotThrow(() => gameTable.Play());
            Assert.IsTrue(gameTable.GameDeck.Cards.Count < startAmountOfCards);
        }
Exemple #6
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);
        }