public bool IsHand(IHand hand) { Suit? suit = null; Value? expectedCard = null; int cardsChecked = 0; foreach (var card in hand.GetCards().OrderBy(c => c.GetCardValue())) { if (!expectedCard.HasValue) { expectedCard = card.GetCardValue(); } if (cardsChecked == 4 && expectedCard == Value.Six && card.GetCardValue() == Value.Ace) { hand.SetRank(Rank.StraightFlush); return true; } if ((suit.HasValue && suit.Value != card.GetCardSuit())|| card.GetCardValue() != expectedCard) { return false; } suit = card.GetCardSuit(); expectedCard ++; cardsChecked++; } hand.SetRank(Rank.StraightFlush); return true; }
public bool IsHand(IHand hand) { var threeOfAKind = false; var pair = false; for (var i = Value.Two; i <= Value.Ace; i++) { IEnumerable<Card> cardsOfSameValue = hand.GetCards().Where(obj => obj.GetCardValue() == i); if (cardsOfSameValue.Count() > 2 && !threeOfAKind) { threeOfAKind = true; } else if (cardsOfSameValue.Count() > 1 && !pair) { pair = true; } if (threeOfAKind && pair) { hand.SetRank(Rank.FullHouse); return true; } } return false; }
public bool IsHand(IHand hand) { for (var i = Value.Two; i <= Value.Ace; i ++) { var fourMatchCheck = hand.GetCards().Where(obj => obj.GetCardValue() == i); if (fourMatchCheck.Count() == 4) { hand.SetRank(Rank.FourOfAKind); return true; } } return false; }
public bool IsHand(IHand hand) { for (var i = Value.Two; i <= Value.Ace; i++) { IEnumerable<Card> cardsOfSameValue = hand.GetCards().Where(obj => obj.GetCardValue() == i); if (cardsOfSameValue.Count() == 3) { hand.SetRank(Rank.ThreeOfAKind); return true; } } return false; }
public bool IsHand(IHand hand) { Suit? suit = null; foreach (var card in hand.GetCards()) { if (suit.HasValue && suit != card.GetCardSuit()) { return false; } suit = card.GetCardSuit(); } hand.SetRank(Rank.Flush); return true; }
private bool IsStraight(IHand hand) { var sortedHand = hand.SortCards(); var expectedNextCardValue = sortedHand[0].GetCardValue() + 1; for (var x = 1; x < sortedHand.Count; x++) { var currentCard = sortedHand[x]; if (currentCard.GetCardValue() != expectedNextCardValue) { return false; } expectedNextCardValue++; } hand.SetRank(Rank.Straight); return true; }
public bool IsHand(IHand hand) { Suit? suit = null; var expectedCard = Value.Ten; foreach (var card in hand.GetCards().OrderBy(c => c.GetCardValue())) { if ((suit.HasValue && suit.Value != card.GetCardSuit()) || (card.GetCardValue() != expectedCard)) { return false; } expectedCard++; suit = card.GetCardSuit(); } hand.SetRank(Rank.RoyalFlush); return true; }
public bool IsHand(IHand hand) { var numberOfPairs = 0; for (var i = Value.Two; i <= Value.Ace; i++) { var cardsOfSameValue = hand.GetCards().Where(obj => obj.GetCardValue() == i); if (cardsOfSameValue.Count() == 2) { numberOfPairs++; } } if (numberOfPairs == 1) { hand.SetRank(Rank.Pair); return true; } return false; }