public bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (playerCards == null || boardCards == null || playerCards.Count() != 2 || boardCards.Count() < 3) { return(false); } var allCards = boardCards.ToList(); allCards.AddRange(playerCards); if (HandAnalyzerHelpers.IsPair(playerCards, 1) || HandAnalyzerHelpers.IsNofKind(boardCards, 3) || !HandAnalyzerHelpers.IsNofKind(allCards, 3)) { return(false); } var secondSetCard = boardCards.OrderByDescending(x => x.RankNumericValue).ElementAt(1); if (boardCards.Count(x => x.RankNumericValue == secondSetCard.RankNumericValue) == 2 && playerCards.Any(x => x.RankNumericValue == secondSetCard.RankNumericValue)) { var kicker = playerCards.FirstOrDefault(p => !boardCards.Any(b => b.Rank == p.Rank)); if (kicker != null) { return(HandAnalyzerHelpers.IsDecentKicker(kicker)); } } return(false); }
public bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (playerCards == null || boardCards == null || playerCards.Count() != 2 || boardCards.Count() < 3) { return(false); } if (!HandAnalyzerHelpers.IsFlush(playerCards)) { return(false); } var allCards = new List <Cards.Card>(playerCards); allCards.AddRange(boardCards); var suitGroup = allCards.GroupBy(x => x.Suit); if (suitGroup.Any(g => g.Count() >= 5)) { var flushBoardCards = suitGroup.Where(g => g.Count() >= 5).First().OrderByDescending(x => x.RankNumericValue).Take(5); if (playerCards.All(x => flushBoardCards.Any(f => f.CardStringValue == x.CardStringValue))) { return(playerCards.Any(x => HandAnalyzerHelpers.IsDecentKicker(x))); } } return(false); }
public bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (playerCards == null || boardCards == null || playerCards.Count() != 2 || boardCards.Count() < 3) { return(false); } var allCards = boardCards.ToList(); allCards.AddRange(playerCards); if (HandAnalyzerHelpers.IsPair(playerCards, 1) || HandAnalyzerHelpers.IsNofKind(boardCards, 3) || !HandAnalyzerHelpers.IsNofKind(allCards, 3)) { return(false); } bool isThreeOfAKind = boardCards.Where(x => x.RankNumericValue == playerCards.ElementAt(0).RankNumericValue).Count() == 2 || boardCards.Where(x => x.RankNumericValue == playerCards.ElementAt(1).RankNumericValue).Count() == 2; if (isThreeOfAKind) { var kicker = playerCards.FirstOrDefault(p => !boardCards.Any(b => b.Rank == p.Rank)); if (kicker != null) { return(HandAnalyzerHelpers.IsDecentKicker(kicker)); } } return(false); }
public bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (!HandAnalyzerHelpers.IsFlushDraw(playerCards, boardCards, 2)) { return(false); } return(HandAnalyzerHelpers.IsDecentKicker(playerCards.OrderByDescending(x => x.RankNumericValue).First())); }
public bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (!HandAnalyzerHelpers.IsFlushDraw(playerCards, boardCards, 1)) { return(false); } var drawSuit = boardCards.GroupBy(x => x.Suit).FirstOrDefault(x => x.Count() == 3).Key; return((drawSuit != null) && HandAnalyzerHelpers.IsDecentKicker(playerCards.OrderByDescending(x => x.RankNumericValue).First(x => x.Suit == drawSuit))); }
public override bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (base.Analyze(playerCards, boardCards)) { var unpairedCard = HandAnalyzerHelpers.GetUnpairedCard(playerCards, boardCards); if (unpairedCard != null) { return(HandAnalyzerHelpers.IsDecentKicker(unpairedCard)); } } return(false); }
public bool Analyze(IEnumerable <Cards.Card> playerCards, BoardCards boardCards) { if (playerCards == null || boardCards == null || playerCards.Count() != 2 || boardCards.Count() < 4) { return(false); } return(playerCards.Any(x => HandAnalyzerHelpers.IsOneCardStraight(x, boardCards) && HandAnalyzerHelpers.IsDecentKicker(x))); }