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 sortedBoard = boardCards.OrderBy(x => x.RankNumericValue); for (int i = 0; i < sortedBoard.Count() - 3; i++) { var cards = sortedBoard.Take(3).ToList(); if (cards.Any(x => x.Suit != playerCards.First().Suit)) { return(false); } cards.AddRange(playerCards); if (HandAnalyzerHelpers.IsStraight(cards, true)) { return(true); } } return(false); }
public bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (playerCards == null || boardCards == null || playerCards.Count() != 2 || boardCards.Count() == 0) { return(false); } if (HandAnalyzerHelpers.IsFlush(playerCards)) { var allCards = new List <HandHistories.Objects.Cards.Card>(playerCards); var boardCopy = new List <HandHistories.Objects.Cards.Card>(boardCards.Where(x => x.Suit == allCards.First().Suit)); allCards.AddRange(boardCopy); var royalFlushCards = HandAnalyzerHelpers.GetRoyalFlushCards(allCards); if (royalFlushCards != null) { if (!playerCards.Any(c => !royalFlushCards.Contains(c))) { return(true); } } } 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 (boardCards == null || boardCards.Count() == 0) { return(false); } if (HandAnalyzerHelpers.IsFlush(boardCards) && HandAnalyzerHelpers.IsStraight(boardCards, true)) { return(true); } return(false); }
public bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (boardCards == null || boardCards.Count() == 0) { return(false); } if (HandAnalyzerHelpers.IsFlush(boardCards) && HandAnalyzerHelpers.IsStraight(boardCards) && boardCards.Any(x => x.Rank == HandHistories.Objects.Cards.Card.PossibleRanksHighCardFirst.First())) { return(true); } return(false); }
public bool Analyze(IEnumerable <HandHistories.Objects.Cards.Card> playerCards, BoardCards boardCards) { if (playerCards == null || boardCards == null || playerCards.Count() != 2 || boardCards.Count() < 4) { return(false); } if (!HandAnalyzerHelpers.IsFlush(playerCards)) { return(false); } var sortedBoard = boardCards.OrderBy(x => x.RankNumericValue); for (int i = 0; i < sortedBoard.Count() - 4; i++) { var cards = sortedBoard.Take(4).ToList(); if (!HandAnalyzerHelpers.IsFlush(cards)) { return(false); } foreach (var card in playerCards) { var straightFlushCards = new List <Cards.Card>(cards); straightFlushCards.Add(card); if (HandAnalyzerHelpers.IsFlush(straightFlushCards) && HandAnalyzerHelpers.IsStraight(straightFlushCards, true)) { return(true); } } } return(false); }