public override IHandClassification Classify(Hand hand)
        {
            var nOfAKind = new NOfAKind(hand);

            if (nOfAKind.HasNOfAKind(2))
            {
                var pairCardValue = nOfAKind.NOfAKindValues(2).First();
                return(new PairClassification(pairCardValue));
            }

            return(Next.Classify(hand));
        }
Beispiel #2
0
        public override IHandClassification Classify(Hand hand)
        {
            var areValuesAscending = AreValuesAscending(hand);
            var areColorsSame      = AreColorsSame(hand);
            var isStraitFlush      = areValuesAscending && areColorsSame;

            if (isStraitFlush)
            {
                var highCard = hand.CardValues.Max();
                return(new StraightFlushClassification(highCard));
            }

            return(Next.Classify(hand));
        }
Beispiel #3
0
        public override IHandClassification Classify(Hand hand)
        {
            var nOfAKind = new NOfAKind(hand);

            var hasThreeOfAKind = nOfAKind.HasNOfAKind(3);
            var hasTwoOfAKind   = nOfAKind.HasNOfAKind(2);
            var isFullHouse     = hasThreeOfAKind && hasTwoOfAKind;

            if (isFullHouse)
            {
                var tripletCardValue = nOfAKind.NOfAKindValues(3).First();
                var pairCardValue    = nOfAKind.NOfAKindValues(2).First();

                return(new FullHouseClassification(tripletCardValue, pairCardValue));
            }

            return(Next.Classify(hand));
        }