//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(); }
// 4. public void EvaluateHand() { if (Cards.Count >= 5) { var eval = _eval.EvaluateHand(Cards); BestCards.AddRange(eval.Cards); HandValue = eval.HandValue; Suit = eval.Suit; } }
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); }