예제 #1
0
파일: Hand.cs 프로젝트: SIITON/Uppgift4
        private void Analyze()
        {
            var ranks       = new List <int>();
            var pair_values = Values.Duplicates();

            if (pair_values.Count() == 1)
            {
                ranks.Add((int)Pokerhands.Pair);
            }
            if (pair_values.Count() == 2)
            {
                ranks.Add((int)Pokerhands.TwoPair);
            }
            if (Values.Triplets().Count() == 1)
            {
                ranks.Add((int)Pokerhands.ThreeOfAKind);
            }
            if (Values.Quadruplets().Count() == 1)
            {
                ranks.Add((int)Pokerhands.FourOfAKind);
            }
            if (Values.IsStraight())
            {
                ranks.Add((int)Pokerhands.Straight);
            }
            if (Faces.IsFlush())
            {
                ranks.Add((int)Pokerhands.Flush);
            }

            HighCard = (Values.Min() == 1) ? 14 : Values.Max();
            if (HighCard == 14)
            {
                ranks.Add((int)Pokerhands.HighCard);
            }

            if (ranks.Contains((int)Pokerhands.ThreeOfAKind) && ranks.Contains((int)Pokerhands.Pair))
            {
                ranks.Add((int)Pokerhands.FullHouse);
            }

            if (ranks.Contains((int)Pokerhands.Straight) && ranks.Contains((int)Pokerhands.Flush))
            {
                ranks.Add((int)Pokerhands.StraightFlush);
            }
            if (ranks.Contains((int)Pokerhands.StraightFlush) && Values.Max() == 13 && HighCard == 14)
            {
                ranks.Add((int)Pokerhands.RoyalFlush);
            }
            RankOfHand = ranks;
        }