private Hand FindBestTwoPair(Hand handOne, Hand handTwo)
        {
            var repeatingCardsComparer = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo);
            var bestPairHand = repeatingCardsComparer.DetermineStrongestHand(2);

            if (bestPairHand != null)
            {
                return bestPairHand;
            }

            return repeatingCardsComparer.DetermineStrongestHand(1);
        }
        public Hand IdentifyHighestMultiples(GroupsOfCardsOfSameValueTieBreaker repeatingCardsComparer)
        {
            Hand bestHand = null;

            bestHand = repeatingCardsComparer.DetermineStrongestHand(4);
            if (bestHand != null)
            {
                return bestHand;
            }

            return repeatingCardsComparer.DetermineStrongestHand(1);
        }
        private static Hand GetFullHouseWinner(Hand handOne, Hand handTwo)
        {
            var strongerRepeatingCards = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo);

            var highestThreeOfAKindHand = strongerRepeatingCards.DetermineStrongestHand(3);

            if (highestThreeOfAKindHand != null)
                return highestThreeOfAKindHand;

            var highestPairHand = strongerRepeatingCards.DetermineStrongestHand(2);
            return highestPairHand;
        }
        private Hand FindBestHand(Hand handTwo, Hand handOne)
        {
            var repeatingCardsComparer = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo);

            var bestThreeOfAKindHand = repeatingCardsComparer.DetermineStrongestHand(3) ;

            if (bestThreeOfAKindHand != null)
            {
                return bestThreeOfAKindHand;
            }
            var bestKickerHand = repeatingCardsComparer.DetermineStrongestHand(1);

            return bestKickerHand;
        }
Esempio n. 5
0
        public Hand DetermineStrongestHand(Hand handOne, Hand handTwo)
        {
            Hand bestHand = null;
            var handSize = handOne.GetCards().Count;

            handOne.ArrangeCardsHighToLow();
            handTwo.ArrangeCardsHighToLow();

            var kickerBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo);

            bestHand = kickerBreaker.DetermineStrongestHand(1);

            for (var i = 0; i < handSize; i++)
            {
                if (handOne.GetCards()[i].GetCardValue() > handTwo.GetCards()[i].GetCardValue())
                {
                    bestHand = handOne;
                    break;
                }

                if (handTwo.GetCards()[i].GetCardValue() > handOne.GetCards()[i].GetCardValue())
                {
                    bestHand = handTwo;
                    break;
                }
            }
            return bestHand;
        }
        public void Should_Return_Null_If_Multiples_Are_The_Same()
        {
            var handOne = HandBuilder.FivePairsHighFifthPair();
            var handTwo = HandBuilder.FivePairsHighFifthPair();

            var pairBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo);
            var result = pairBreaker.DetermineStrongestHand(2);

            Assert.IsNull(result);
        }
        public void Should_Not_Be_Affected_By_Different_Multiples()
        {
            var handOne = HandBuilder.FourOfAKindKings();
            var handTwo = HandBuilder.TwoPairSevensOverTwosFourKicker();

            var pairBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo);
            var result = pairBreaker.DetermineStrongestHand(2);

            Assert.That(result.Equals(handTwo));
        }
        public void Same_Hand_Should_Result_In_Draw()
        {
            var handOne = HandBuilder.HighCardAce();
            var handTwo = HandBuilder.HighCardAce();

            var pairBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo);
            var result = pairBreaker.DetermineStrongestHand(2);

            Assert.IsNull(result);
        }
        public void Should_Check_Subsequent_Multiples_If_Previous_Multiples_Are_Equal_Until_Multiples_Exhausted()
        {
            var handOne = HandBuilder.FivePairsHighFifthPair();
            var handTwo = HandBuilder.FivePairsLowFifthPair();

            var pairBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo);

            var result = pairBreaker.DetermineStrongestHand(2);

            Assert.That(result.Equals(handOne));
        }