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); }
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); }