Beispiel #1
0
 //public Hand() { }
 public void Clear()
 {
     Cards.Clear();
     BestCards.Clear();
     PlayerCards.Clear();
     HandValue = Hands.Nothing;
     Suit = 0;
 }
        public void Clear()
        {
            HandValue = Hands.Nothing;
            Suit      = Suits.Unknown;

            Cards.Clear();
            BestCards.Clear();
            PlayerCards.Clear();
        }
Beispiel #3
0
 // 4.
 public void EvaluateHand()
 {
     if (Cards.Count >= 5)
     {
         var eval = _eval.EvaluateHand(Cards);
         BestCards.AddRange(eval.Cards);
         HandValue = eval.HandValue;
         Suit = eval.Suit;
     }
 }
Beispiel #4
0
        public Hand(Card[] playerCards, Card[] tableCards)
        {
            var possibleCards = new List <Card>();

            possibleCards.AddRange(playerCards);
            possibleCards.AddRange(tableCards);

            var royalFLush = SetRoyalFlush(possibleCards);

            if (!royalFLush)
            {
                var straightFlush = SetStraightFlush(possibleCards);
                if (!straightFlush)
                {
                    var fourOfAKind = SetFourOfAKind(possibleCards);
                    if (!fourOfAKind)
                    {
                        var fullHouse = SetFullHouse(possibleCards);
                        if (!fullHouse)
                        {
                            var flush = SetFlush(possibleCards);
                            if (!flush)
                            {
                                var straight = SetStraight(possibleCards);
                                if (!straight)
                                {
                                    var threeOfAKind = SetThreeOfAKind(possibleCards);
                                    if (!threeOfAKind)
                                    {
                                        var twoPair = SetTwoPair(possibleCards);
                                        if (!twoPair)
                                        {
                                            var onePair = SetOnePair(possibleCards);
                                            if (!onePair)
                                            {
                                                SetHighCard(possibleCards);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            if (BestCards.Count() > 5)
            {
                throw new Exception("Hands can only have 5 cards");
            }
        }
        public void EvaluateHand()
        {
            if (Cards.Count < 2)
            {
                return;
            }
            BestCards.Clear();
            HighCards.Clear();
            var result = _eval.EvaluateHand(Cards);

            BestCards.AddRange(result.Cards);
            HighCards.AddRange(result.HighCards);

            HandValue = result.HandValue;
            Suit      = result.Suit;
        }
        private void IsFourOfAKind(List <Card> cards)
        {
            var fourOfAKind = cards.GroupBy(c => c.Value)
                              .Select(c => new { Value = c.Key, Count = c.Count() })
                              .FirstOrDefault(d => d.Count.Equals(4));

            #region Four of a Kind
            if (fourOfAKind != null)
            {
                HandValue = Hands.FourOfAKind;
                BestCards = cards.Where(c => c.Value.Equals(fourOfAKind.Value)).ToList();

                var kicker = cards.Last(c => !c.Value.Equals(fourOfAKind.Value));
                BestCards.Add(kicker);
                return;
            }
            #endregion
        }
        public (List <Card> Cards, Hands HandValue, Suits Suit) EvaluateHand(List <Card> cards)
        {
            HandValue = Hands.Nothing;
            Suit      = 0;
            BestCards.Clear();

            if (cards.Count() >= 2)
            {
                #region Sort the cards
                cards.Sort();
                #endregion

                #region Royal Straight Flush &  Straight Flush & Straight
                StraightCards(cards);
                if (HandValue.Equals(Hands.RoyalStraightFlush) || HandValue.Equals(Hands.StraightFlush))
                {
                    return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
                }
                #endregion

                #region Four of a kind
                IsFourOfAKind(cards);
                if (HandValue.Equals(Hands.FourOfAKind))
                {
                    return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
                }
                #endregion

                #region Full House
                IsFullHouse(cards);
                if (HandValue.Equals(Hands.FullHouse))
                {
                    return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
                }
                #endregion

                #region Flush
                FlushCards(cards);
                if (HandValue.Equals(Hands.Flush))
                {
                    return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
                }
                #endregion

                #region Straight
                if (HandValue.Equals(Hands.Straight))
                {
                    return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
                }
                #endregion

                #region Three of a Kind
                IsThreeOfAKind(cards);
                if (HandValue.Equals(Hands.ThreeOfAKind))
                {
                    return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
                }
                #endregion

                #region Two Pair
                IsTwoPair(cards);
                if (HandValue.Equals(Hands.TwoPair))
                {
                    return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
                }
                #endregion

                #region Pair
                IsPair(cards);
                if (HandValue.Equals(Hands.Pair))
                {
                    return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
                }
                #endregion

                #region High Card
                HighCard(cards);
                #endregion
            }

            return(Cards : BestCards, HandValue : HandValue, Suit : Suit);
        }