Пример #1
0
        public decimal HandValue(Card[] cards)
        {
            var flushValue = _flushChecker.HandValue(cards);

            if (flushValue > 0)
            {
                var flushSuit   = cards.GroupBy(c => c.Suit).OrderByDescending(c => c.Count()).Select(c => c.Key).First();
                var straitValue = _straitChecker.HandValue(cards.Where(c => c.Suit == flushSuit).ToArray());
                if (straitValue > 0)
                {
                    return(straitValue + 4);
                }
            }

            return(0);
        }
Пример #2
0
        public decimal HandValue(Card[] cards)
        {
            var flushValue = _flushChecker.HandValue(cards);

            if (flushValue > 0)
            {
                var flushSuit   = cards.GroupBy(c => c.Suit).OrderByDescending(c => c.Count()).Select(c => c.Key).First();
                var straitValue = _straitChecker.HandValue(cards.Where(c => c.Suit == flushSuit).Concat(cards.Where(c => c.Value == 2)).Distinct().ToArray());
                if (straitValue > 0)
                {
                    if (straitValue == 4.1413121110m && !cards.Any(c => c.Value == 2))
                    {
                        return(straitValue + 6);
                    }
                    else
                    {
                        return(straitValue + 4);
                    }
                }
            }

            return(0);
        }