示例#1
0
        public void ShouldDoubleDownWhenDealerHasLessThan7AndGamblerHas10Or11()
        {
            var gamblerHand10 = new BlackJackHand(
                new Card(Rank.Eight, Suit.Diamonds),
                new Card(Rank.Two, Suit.Hearts));

            var gamblerHand11 = new BlackJackHand(
                new Card(Rank.Eight, Suit.Diamonds),
                new Card(Rank.Three, Suit.Hearts));

            Assert.AreEqual(BlackJackAction.DoubleDown,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Six, Suit.Spades), gamblerHand10));

            Assert.AreEqual(BlackJackAction.DoubleDown,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Six, Suit.Spades), gamblerHand11));

            Assert.AreEqual(BlackJackAction.Hit,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Seven, Suit.Spades), gamblerHand10));

            Assert.AreEqual(BlackJackAction.Hit,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Seven, Suit.Spades), gamblerHand11));
        }
示例#2
0
        public void ShouldSplitSevenPairWhenDealerHasTwoToSix()
        {
            var gamblerHand = new BlackJackHand(
                new Card(Rank.Seven, Suit.Diamonds),
                new Card(Rank.Seven, Suit.Hearts));

            Assert.AreEqual(BlackJackAction.Hit,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Ace, Suit.Spades), gamblerHand));

            Assert.AreEqual(BlackJackAction.Split,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Two, Suit.Spades), gamblerHand));

            Assert.AreEqual(BlackJackAction.Split,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Three, Suit.Spades), gamblerHand));

            Assert.AreEqual(BlackJackAction.Split,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Four, Suit.Spades), gamblerHand));

            Assert.AreEqual(BlackJackAction.Split,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Five, Suit.Spades), gamblerHand));

            Assert.AreEqual(BlackJackAction.Split,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Six, Suit.Spades), gamblerHand));

            Assert.AreEqual(BlackJackAction.Hit,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Seven, Suit.Spades), gamblerHand));
        }
示例#3
0
 /// <summary>
 ///  Creates a player with a new hand and new balance
 /// </summary>
 /// <param name="newBalance"></param>
 public Player(int newBalance)
 {
     // Sets the player's image and name that is displayed in the picture frame in the UI.
     //this.image = Properties.Settings.Default.PlayerImage;
     //this.name = Properties.Settings.Default.PlayerName;
     this.hand    = new BlackJackHand();
     this.balance = newBalance;
 }
示例#4
0
        public void IsInGame()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Ace, Suit.Clubs));

            Assert.True(hand.IsInGame);
        }
示例#5
0
 public BlackJackGameAutomator(int players)
 {
     hands = new BlackJackHand[players];
     for (int i = 0; i < players; i++)
     {
         hands[i] = new BlackJackHand();
     }
 }
示例#6
0
        public void Value_Under21_WithTwoEights()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Eight, Suit.Clubs));
            hand.Add(new Card(Rank.Eight, Suit.Diamonds));

            Assert.AreEqual(16, hand.Value);
        }
示例#7
0
        public void TwentyOne()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            hand.Add(new Card(Rank.Jack, Suit.Clubs));

            Assert.AreEqual(21, hand.Value);
        }
示例#8
0
        /// <summary>
        /// Initialize deck, hands and start drawing
        /// </summary>
        public BlackJackGame()
        {
            deck   = new Deck();
            player = new BlackJackHand();
            house  = new BlackJackHand();

            player.Add(deck.Draw());
            player.Add(deck.Draw());
        }
示例#9
0
        public void ShouldDetectSoftCount()
        {
            var hand = new BlackJackHand();

            Assert.IsFalse(hand.HasSoftCount);

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            Assert.IsTrue(hand.HasSoftCount);
        }
示例#10
0
        public void ValueOver21()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Jack, Suit.Clubs));
            hand.Add(new Card(Rank.Jack, Suit.Diamonds));
            hand.Add(new Card(Rank.Jack, Suit.Hearts));

            Assert.AreEqual(30, hand.Value);
        }
示例#11
0
        public void ShouldDetectBlackJack()
        {
            var hand = new BlackJackHand();

            Assert.IsFalse(hand.IsBlackJack);

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            hand.Add(new Card(Rank.King, Suit.Clubs));
            Assert.IsTrue(hand.IsBlackJack);
        }
示例#12
0
        public void ShouldConsiderAceAndTenBlackJack()
        {
            var hand = new BlackJackHand();

            Assert.IsFalse(hand.IsBlackJack);

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            hand.Add(new Card(Rank.Ten, Suit.Clubs));
            Assert.IsTrue(hand.IsBlackJack);
        }
示例#13
0
        public void ShouldHoldWhenGamblerHasBlackJack()
        {
            var gamblerHand = new BlackJackHand(
                new Card(Rank.Ace, Suit.Diamonds),
                new Card(Rank.Jack, Suit.Hearts));

            Assert.AreEqual(BlackJackAction.Hold,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Ace, Suit.Spades), gamblerHand));
        }
示例#14
0
        public void MakeHands(string[] names)
        {
            //List<Hand> Hands = new List<Hand>();

            for (int i = 0; i <= (Players - 1); i++)
            {
                BlackJackHand hand = new BlackJackHand(names[i], 2);
                this.Hands.Add(hand);
            }
        }
示例#15
0
        public void ShouldAlwaysSplitEightPair()
        {
            var gamblerHand = new BlackJackHand(
                new Card(Rank.Eight, Suit.Diamonds),
                new Card(Rank.Eight, Suit.Hearts));

            Assert.AreEqual(BlackJackAction.Split,
                            BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Seven, Suit.Spades), gamblerHand));
        }
示例#16
0
        public void Value_Under21_WithLowAce()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            hand.Add(new Card(Rank.Eight, Suit.Clubs));
            hand.Add(new Card(Rank.Nine, Suit.Diamonds));

            Assert.AreEqual(18, hand.Value);
        }
示例#17
0
        public void Value_Under21_WithTwoHighAces()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            hand.Add(new Card(Rank.Eight, Suit.Clubs));
            hand.Add(new Card(Rank.Ace, Suit.Hearts));

            Assert.AreEqual(20, hand.Value);
        }
示例#18
0
        public void ShouldDetectWhenBusted()
        {
            var hand = new BlackJackHand();

            Assert.IsFalse(hand.IsBusted);

            hand.Add(new Card(Rank.Ten, Suit.Clubs));
            hand.Add(new Card(Rank.Ten, Suit.Clubs));
            hand.Add(new Card(Rank.Ten, Suit.Clubs));
            Assert.IsTrue(hand.IsBusted);
        }
示例#19
0
        public void SplitPair(List <BlackJackHand> hand, IDeck deck, int index)
        {
            BlackJackHand handnew = new BlackJackHand($"{hand[index].Playername} split", 2);
            Card          card    = new Card("", "", 0);

            card = hand[index].Cards[1];
            hand[index].Cards[1] = deck.Draw(1);
            handnew.Cards.Add(card);
            handnew.Cards.Add(deck.Draw(1));
            hand.Add(handnew);
        }
示例#20
0
        public void IsBusted()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Jack, Suit.Clubs));
            hand.Add(new Card(Rank.Jack, Suit.Diamonds));
            hand.Add(new Card(Rank.Jack, Suit.Hearts));

            Assert.AreEqual(30, hand.Value);
            Assert.True(hand.IsBusted);
        }
示例#21
0
        public void Value_Under21_WithLowAndHighAces()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            hand.Add(new Card(Rank.Two, Suit.Clubs));
            hand.Add(new Card(Rank.Seven, Suit.Clubs));
            hand.Add(new Card(Rank.Ace, Suit.Hearts));

            Assert.AreEqual(21, hand.Value);
        }
示例#22
0
        public void Value_AfterUpdate()
        {
            BlackJackHand hand = new BlackJackHand();

            hand.Add(new Card(Rank.Two, Suit.Clubs));

            Assert.AreEqual(2, hand.Value);

            hand.Add(new Card(Rank.Three, Suit.Clubs));

            Assert.AreEqual(5, hand.Value);
        }
示例#23
0
        public void ShouldHitWhenGamblerHasLessThan17AndDealerHasMoreThan6()
        {
            var gamblerHand = new BlackJackHand(
                new Card(Rank.Ten, Suit.Diamonds),
                new Card(Rank.Six, Suit.Hearts));

            Assert.AreEqual(BlackJackAction.Hit, BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Seven, Suit.Spades), gamblerHand));

            Assert.AreEqual(BlackJackAction.Hold, BlackJackAdvisor.RecommendAction
                                (new Card(Rank.Six, Suit.Spades), gamblerHand));
        }
示例#24
0
        public void ShouldCalculateHardCount()
        {
            var hand = new BlackJackHand();

            Assert.AreEqual(0, hand.SoftCount);

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            Assert.AreEqual(11, hand.Count);

            hand.Add(new Card(Rank.Ten, Suit.Clubs));
            Assert.AreEqual(21, hand.Count);
        }
示例#25
0
 public bool PlayHand(BlackJackHand hand)
 {
     while (hand.score() < HIT_UNTIL)
     {
         BlackJackCard card = deck.DealCard();
         if (card == null)
         {
             return(false);
         }
         hand.AddCard(card);
     }
     return(true);
 }
示例#26
0
 private void SetupPlayers()
 {
     _deck = new BlackJackDeck(5);
     _deck.Shuffle();
     _playerHand          = new BlackJackHand();
     _dealerHand          = new BlackJackHand();
     pbDealer.Image       = null;
     pbPlayer.Image       = null;
     btnDeal.Visible      = true;
     btnDouble.Visible    = false;
     btnPass.Visible      = false;
     btnExtraCard.Visible = false;
     nudBet.Value         = _betValue;
 }
示例#27
0
        public void ShouldNotBustWhenSoftCountAvailable()
        {
            var hand = new BlackJackHand();

            Assert.IsFalse(hand.IsBusted);

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            hand.Add(new Card(Rank.Ten, Suit.Clubs));
            Assert.IsFalse(hand.IsBusted);

            hand.Add(new Card(Rank.Ten, Suit.Clubs));
            Assert.IsTrue(hand.IsBusted);
        }
示例#28
0
        public void ShouldDetectMultipleAces()
        {
            var hand = new BlackJackHand();

            Assert.IsFalse(hand.HasJustTwoAces);

            hand.Add(new Card(Rank.Ace, Suit.Clubs));
            Assert.IsFalse(hand.HasJustTwoAces);

            hand.Add(new Card(Rank.Ace, Suit.Hearts));
            Assert.IsTrue(hand.HasJustTwoAces);

            hand.Add(new Card(Rank.Ace, Suit.Diamonds));
            Assert.IsFalse(hand.HasJustTwoAces);
        }
        protected override void ShowValue()
        {
            BlackJackManager manager    = GameObject.Find("BlackJackManager").GetComponent <BlackJackManager>();
            BlackJackHand    playerHand = GameObject.Find("Player Hand Value").GetComponent <BlackJackHand>();

            //  BUG     : Player does not win on a "Natural Blackjack"
            //  CATEGORY: GAME RULES
            //  STATUS  : PENDING REVIEW
            if (playerHand.handVals == 21)
            {
                manager.PlayerWin();
            }
            else
            {
                base.ShowValue();
            }
        }
示例#30
0
        public void DeckOfCards_Should_Check_Hand_Overflow()
        {
            //arrange
            int cardCount = 52;
            var deck      = new BlackJackDeck();
            var hand      = new BlackJackHand(deck);

            //act
            for (int i = 0; i < cardCount; i++)
            {
                hand.TakeCard();
            }

            //assert
            deck.Cards.Count.ShouldBeEquivalentTo(0);
            hand.Points.ShouldBeEquivalentTo(340);
            hand.IsOverFlow.ShouldBeEquivalentTo(true);
        }