public virtual void AddCard(IBlackjackCard card) { _cards.Add(card); if (EligibleForBlackjack) CheckForBlackjack(); }
public bool OfferSplit(IBlackjackCard dealerFaceUpCard) { var splitOccurred = false; // Offer a split to all hands foreach (var hand in Hands.ToList()) { splitOccurred = splitOccurred || ConsiderSplitOffer(hand, dealerFaceUpCard); } return splitOccurred; }
public override void AddCard(IBlackjackCard card) { _cards.Add(card); if (CreatedFromSplit) EligibleForBlackjack = false; if (EligibleForBlackjack) CheckForBlackjack(); CheckForSplitEligibility(); CheckForDoubleDownEligibility(); }
public bool OfferDoubleDown(IPlayerHand playerHand, IBlackjackCard dealerFaceUpCard) { // Simple Strategy - always accept if eligible if (!playerHand.EligibleForDoubleDown) { return false; } var originalAmount = playerHand.Bet.Amount; Balance -= originalAmount; playerHand.Bet = new DoubleDownBet(originalAmount * 2); return true; }
public bool Hit(IPlayerHand playerHand, IBlackjackCard dealerFaceUpCard) { // Simplistic strategy return playerHand.Value() < 17 && playerHand.Bet is AnteBet; }
private bool ConsiderSplitOffer(IPlayerHand playerHand, IBlackjackCard dealerFaceUpCard) { if (!playerHand.EligibleForSplit) { return false; } // Using simple logic for now var hand = new PlayerHand(); Balance -= Ante; hand.Bet = new AnteBet(Ante); _hands.Add(hand); playerHand.SplitInto(hand); return true; }