public bool IsHand(IHand hand)
        {
            var threeOfAKind = false;
            var pair = false;

            for (var i = Value.Two; i <= Value.Ace; i++)
            {
                IEnumerable<Card> cardsOfSameValue = hand.GetCards().Where(obj => obj.GetCardValue() == i);

                if (cardsOfSameValue.Count() > 2 && !threeOfAKind)
                {
                    threeOfAKind = true;

                }
                else if (cardsOfSameValue.Count() > 1 && !pair)
                {
                    pair = true;

                }
                if (threeOfAKind && pair)
                {
                    hand.SetRank(Rank.FullHouse);
                    return true;
                }
            }
            return false;
        }
        public bool IsHand(IHand hand)
        {
            Suit? suit = null;
            Value? expectedCard = null;
            int cardsChecked = 0;

            foreach (var card in hand.GetCards().OrderBy(c => c.GetCardValue()))
            {
                if (!expectedCard.HasValue)
                {
                    expectedCard = card.GetCardValue();
                }
                if (cardsChecked == 4 && expectedCard == Value.Six && card.GetCardValue() == Value.Ace)
                {
                    hand.SetRank(Rank.StraightFlush);
                    return true;
                }

                if ((suit.HasValue && suit.Value != card.GetCardSuit())|| card.GetCardValue() != expectedCard)
                {

                    return false;
                }
                suit = card.GetCardSuit();
                expectedCard ++;
                cardsChecked++;
            }
            hand.SetRank(Rank.StraightFlush);
            return true;
        }
        public bool IsHand(IHand hand)
        {
            for (var i = Value.Two; i <= Value.Ace; i ++)
            {
                var fourMatchCheck = hand.GetCards().Where(obj => obj.GetCardValue() == i);

                if (fourMatchCheck.Count() == 4)
                {
                    hand.SetRank(Rank.FourOfAKind);
                    return true;
                }
            }
            return false;
        }
        public bool IsHand(IHand hand)
        {
            for (var i = Value.Two; i <= Value.Ace; i++)
            {
                IEnumerable<Card> cardsOfSameValue = hand.GetCards().Where(obj => obj.GetCardValue() == i);

                if (cardsOfSameValue.Count() == 3)
                {
                    hand.SetRank(Rank.ThreeOfAKind);
                    return true;
                }
            }
            return false;
        }
Beispiel #5
0
 public bool IsHand(IHand hand)
 {
     Suit? suit = null;
     foreach (var card in hand.GetCards())
     {
         if (suit.HasValue && suit != card.GetCardSuit())
         {
             return false;
         }
         suit = card.GetCardSuit();
     }
     hand.SetRank(Rank.Flush);
     return true;
 }
        private static bool IsAceLowStraight(IHand hand)
        {
            hand.GetCards().Sort();

            return (hand.GetCards()[0].GetCardValue() == Value.Two
                  && hand.GetCards()[1].GetCardValue() == Value.Three
                  && hand.GetCards()[2].GetCardValue() == Value.Four
                  && hand.GetCards()[3].GetCardValue() == Value.Five
                  && hand.GetCards()[4].GetCardValue() == Value.Ace);
        }
        public bool IsHand(IHand hand)
        {
            Suit? suit = null;
            var expectedCard = Value.Ten;
            foreach (var card in hand.GetCards().OrderBy(c => c.GetCardValue()))
            {
                if ((suit.HasValue && suit.Value != card.GetCardSuit()) || (card.GetCardValue() != expectedCard))
                {
                    return false;
                }
                expectedCard++;
                suit = card.GetCardSuit();
            }
            hand.SetRank(Rank.RoyalFlush);

            return true;
        }
        public bool IsHand(IHand hand)
        {
            var numberOfPairs = 0;
            for (var i = Value.Two; i <= Value.Ace; i++)
            {
                var cardsOfSameValue = hand.GetCards().Where(obj => obj.GetCardValue() == i);

                if (cardsOfSameValue.Count() == 2)
                {
                    numberOfPairs++;
                }

            }
            if (numberOfPairs == 1)
            {
                hand.SetRank(Rank.Pair);
                return true;
            }
            return false;
        }
Beispiel #9
0
        private int ScoreHand(IHand hand, bool includeHiddenCards)
        {
            int totalScore   = 0;
            var cardsToScore = hand.GetCards(!includeHiddenCards);

            foreach (ICard card in cardsToScore)
            {
                totalScore += BlackjackGame.GetCardValue(card);
            }

            if (hand.AceCount() > 0)
            {
                // assume they will want to Stand on 18+
                if (totalScore > 7 && totalScore < 12)
                {
                    if (includeHiddenCards == true)   // when cards are hidden, just take lowest total
                    {
                        totalScore += 10;
                    }
                }
            }
            return(totalScore);
        }