private BlackJackStrategy BuildStrategy(
            IEnumerable <AvailableAction> actions, IEnumerable <Card> allCards)
        {
            var strategy = new BlackJackStrategy()
            {
                StrategyItems = new List <BlackJackStrategyItem>()
            };

            foreach (var action in actions)
            {
                List <Card> dealerCards = GetAllCardsForValue(
                    action.DealerCard, allCards);

                foreach (var card in dealerCards)
                {
                    var strategyItem = new BlackJackOverrideStrategyItem()
                    {
                        Action           = action.PlayerAction,
                        DealerCard       = card,
                        PlayerCardValues = new[] { action.PlayerValue }.ToList(),
                             PlayerTotalCardValue = action.PlayerValue
                    };
                    strategy.StrategyItems.Add(strategyItem);
                }
            }

            return(strategy);
        }
Esempio n. 2
0
        public void PlaySingleHand_1Player_PlayerDraws_Bust()
        {
            // Arrange
            var dealer   = new Dealer();
            var table    = new Table(dealer);
            var shoe     = new Shoe(4);
            var playHand = new PlayHand();

            playHand.Init(shoe.Cards, table);

            var blackJackStrategy = new BlackJackStrategy()
            {
                StrategyItems = new List <BlackJackStrategyItem>()
                {
                    new BlackJackStrategyItem()
                    {
                        DealerCard           = new Card(CardSuit.Spades, 3, CardType.Number),
                        PlayerTotalCardValue = 6,
                        Action = PlayerAction.TakeCard
                    },
                    new BlackJackStrategyItem()
                    {
                        DealerCard           = new Card(CardSuit.Spades, 3, CardType.Number),
                        PlayerTotalCardValue = 12,
                        Action = PlayerAction.TakeCard
                    },
                    new BlackJackStrategyItem()
                    {
                        DealerCard           = new Card(CardSuit.Spades, 3, CardType.Number),
                        PlayerTotalCardValue = 19,
                        Action = PlayerAction.TakeCard
                    }
                }
            };

            var player = new Player()
            {
                Money    = 100,
                Strategy = blackJackStrategy
            };

            // Act
            table.SitPlayer(player);
            playHand.PlayerAnte(player, 10);
            playHand.Deal();

            while (playHand.GameInProgress)
            {
                playHand.Play();
            }

            playHand.Payout();

            // Assert
            Assert.Equal(90, player.Money);
            Assert.True(player.Hand.Cards.AddUp() > 21);
        }