Example #1
0
 public int FindScoreOfMostValuableHand(Tile winningDiscardedTile)
 {
     FindMostValuableWayToParseWinningHand(winningDiscardedTile);
     if (BestWayToParseHand == null)
     {
         return(0);
     }
     return(HandScorer.ScoreHand(BestWayToParseHand));
 }
Example #2
0
 public int FindScoreOfMostValuableHand()
 {
     FindMostValuableWayToParseWinningHand();
     if (BestWayToParseHand == null)
     {
         return(0);
     }
     return(HandScorer.ScoreHand(BestWayToParseHand));
 }
Example #3
0
        private void CheckAndUpdateBestWayToParseWinningHand(IList <IList <TileGrouping> > allWaysToParseWinningHand)
        {
            var maxScore = 0;

            foreach (var wayToParse in allWaysToParseWinningHand)
            {
                var tilesPlusCombinedSetsAndBonus = wayToParse.Concat(CalledSets).Concat(BonusSets).ToList();
                var newScore = HandScorer.ScoreHand(tilesPlusCombinedSetsAndBonus);
                if (newScore >= maxScore)
                {
                    maxScore           = newScore;
                    BestWayToParseHand = tilesPlusCombinedSetsAndBonus;
                }
            }
        }
Example #4
0
        public void CanScoreStraight()
        {
            var hand = new Hand();

            new List <Card>
            {
                new Card(CardValue.Six, CardSuit.Hearts),
                new Card(CardValue.Four, CardSuit.Spades),
                new Card(CardValue.Three, CardSuit.Clubs),
                new Card(CardValue.Five, CardSuit.Spades),
                new Card(CardValue.Two, CardSuit.Diamonds)
            }
            .ForEach(card => hand.Draw(card));

            var scorer = new HandScorer(hand, new FiveCardPokerRanks().HandRanks);

            scorer.GetScore().Name.Should().Be("Straight");
        }
Example #5
0
        public void CanScoreThreeOfAKind()
        {
            var hand = new Hand();

            new List <Card>
            {
                new Card(CardValue.Eight, CardSuit.Clubs),
                new Card(CardValue.Six, CardSuit.Spades),
                new Card(CardValue.Eight, CardSuit.Diamonds),
                new Card(CardValue.Queen, CardSuit.Spades),
                new Card(CardValue.Eight, CardSuit.Spades)
            }
            .ForEach(card => hand.Draw(card));

            var scorer = new HandScorer(hand, new FiveCardPokerRanks().HandRanks);

            scorer.GetScore().Name.Should().Be("Three of a kind");
        }
Example #6
0
        public void CanScoreFullHouse()
        {
            var hand = new Hand();

            new List <Card>
            {
                new Card(CardValue.Ace, CardSuit.Diamonds),
                new Card(CardValue.Ace, CardSuit.Clubs),
                new Card(CardValue.Ace, CardSuit.Spades),
                new Card(CardValue.Two, CardSuit.Hearts),
                new Card(CardValue.Two, CardSuit.Spades)
            }
            .ForEach(card => hand.Draw(card));

            var scorer = new HandScorer(hand, new FiveCardPokerRanks().HandRanks);

            scorer.GetScore().Name.Should().Be("Full house");
        }
Example #7
0
        public void CanScoreFlush()
        {
            var hand = new Hand();

            new List <Card>
            {
                new Card(CardValue.Ace, CardSuit.Spades),
                new Card(CardValue.Six, CardSuit.Spades),
                new Card(CardValue.Ten, CardSuit.Spades),
                new Card(CardValue.Two, CardSuit.Spades),
                new Card(CardValue.Two, CardSuit.Spades)
            }
            .ForEach(card => hand.Draw(card));

            var scorer = new HandScorer(hand, new FiveCardPokerRanks().HandRanks);

            scorer.GetScore().Name.Should().Be("Flush");
        }
        public void CanScoreFullHouse()
        {
            var hand = new Hand();

            new List<Card>
                {
                    new Card(CardValue.Ace, CardSuit.Diamonds),
                    new Card(CardValue.Ace, CardSuit.Clubs),
                    new Card(CardValue.Ace, CardSuit.Spades),
                    new Card(CardValue.Two, CardSuit.Hearts),
                    new Card(CardValue.Two, CardSuit.Spades)
                }
            .ForEach(card => hand.Draw(card));

            var scorer = new HandScorer(hand, new FiveCardPokerRanks().HandRanks);

            scorer.GetScore().Name.Should().Be("Full house");
        }
        public void CanScoreFlush()
        {
            var hand = new Hand();

            new List<Card>
                {
                    new Card(CardValue.Ace, CardSuit.Spades),
                    new Card(CardValue.Six, CardSuit.Spades),
                    new Card(CardValue.Ten, CardSuit.Spades),
                    new Card(CardValue.Two, CardSuit.Spades),
                    new Card(CardValue.Two, CardSuit.Spades)
                }
            .ForEach(card => hand.Draw(card));

            var scorer = new HandScorer(hand, new FiveCardPokerRanks().HandRanks);

            scorer.GetScore().Name.Should().Be("Flush");
        }
        public void CanScorePair()
        {
            var hand = new Hand();

            new List<Card>
                {
                    new Card(CardValue.Ace, CardSuit.Diamonds),
                    new Card(CardValue.Eight, CardSuit.Spades),
                    new Card(CardValue.Queen, CardSuit.Spades),
                    new Card(CardValue.Six, CardSuit.Spades),
                    new Card(CardValue.Queen, CardSuit.Clubs)
                }
            .ForEach(card => hand.Draw(card));

            var scorer = new HandScorer(hand, new FiveCardPokerRanks().HandRanks);

            scorer.GetScore().Name.Should().Be("Pair");
        }
        public void CanScoreStraightFlush()
        {
            var hand = new Hand();

            new List<Card>
                {
                    new Card(CardValue.Two, CardSuit.Diamonds),
                    new Card(CardValue.Four, CardSuit.Diamonds),
                    new Card(CardValue.Three, CardSuit.Diamonds),
                    new Card(CardValue.Five, CardSuit.Diamonds),
                    new Card(CardValue.Six, CardSuit.Diamonds)
                }
            .ForEach(card => hand.Draw(card));

            var scorer = new HandScorer(hand, new FiveCardPokerRanks().HandRanks);

            scorer.GetScore().Name.Should().Be("Straight flush");
        }