예제 #1
0
        internal static bool IsFlushDraw(IEnumerable <Card> playerCards, IEnumerable <Card> boardCards, int amountOfPlayersCardsInDraw, bool isBackdoor = false)
        {
            if (playerCards == null || boardCards == null || playerCards.Count() != 2 || boardCards.Count() < 3)
            {
                return(false);
            }

            var allCards   = HandAnalyzerHelpers.CombineCardLists(playerCards, boardCards);
            var suitGroups = allCards.GroupBy(x => x.CardSuit);
            var drawGroup  = suitGroups.FirstOrDefault(x => x.Count() == (isBackdoor ? 3 : 4));

            if (drawGroup == null || suitGroups.Any(x => x.Count() > drawGroup.Count()) || playerCards.Count(x => drawGroup.Any(d => d.CardSuit == x.CardSuit)) != amountOfPlayersCardsInDraw)
            {
                return(false);
            }

            return(true);
        }