public static bool IsRoyalFlush(IEnumerable <Card> playerCards, IEnumerable <Card> tableCards) { var cards = new List <Card>(tableCards); cards.AddRange(playerCards); var comparer = new CardComparer(); cards.Sort(comparer); var pair = MaxSuitCount(cards); if (pair.Item2 < 5) { return(false); } cards = cards.Where(x => x.Suit == pair.Item1).ToList(); if ( cards[cards.Count - 1].Rank == CardRank.Ace && cards[cards.Count - 2].Rank == CardRank.King && cards[cards.Count - 3].Rank == CardRank.Queen && cards[cards.Count - 4].Rank == CardRank.Jack && cards[cards.Count - 5].Rank == CardRank.Ten ) { return(true); } return(false); }
public static bool IsStraightFlush(IEnumerable <Card> playerCards, IEnumerable <Card> tableCards) { var cards = new List <Card>(tableCards); cards.AddRange(playerCards); var comparer = new CardComparer(); cards.Sort(comparer); var pair = MaxSuitCount(cards); CardSuit maxSuit = pair.Item1; int max = pair.Item2; if (max < 5) { return(false); } bool haveAce = cards.Count(x => x.Rank == CardRank.Ace && x.Suit == maxSuit) == 1; bool haveTwo = cards.Count(x => x.Rank == CardRank.Two && x.Suit == maxSuit) == 1; if (haveTwo && haveAce) { if ( cards.Exists(x => x.Rank == CardRank.Three && x.Suit == maxSuit) && cards.Exists(x => x.Rank == CardRank.Four && x.Suit == maxSuit) && cards.Exists(x => x.Rank == CardRank.Five && x.Suit == maxSuit) ) { return(true); } } for (int i = 0; i < cards.Count - 5; ++i) { bool isSequence = true; for (int j = 0; j < 4 && isSequence; ++j) { isSequence = comparer.Compare(cards[i + j], cards[i + j + 1]) == -1; } if (isSequence) { return(true); } } return(false); }
public static bool IsFlush(IEnumerable <Card> playerCards, IEnumerable <Card> tableCards) { var cards = new List <Card>(tableCards); cards.AddRange(playerCards); var comparer = new CardComparer(); cards.Sort(comparer); var pair = MaxSuitCount(cards); if (pair.Item2 >= 5) { return(true); } return(false); }