Exemple #1
0
        public static CardStrength DetermineCardStrength(IList <Card> cards)
        {
            #region  default variable
            var pokerDescription = string.Empty;
            var cardStength      = new CardStrength();
            var cardValuelist    = cards.Select(c => (int)c.Value).ToList();
            var category         = PokerHand.NotSet;
            var first            = 0;
            var second           = 0;
            var third            = 0;
            var third_2          = 0;
            var third_3          = 0;
            var highCard         = cardValuelist.Max();
            var vals             = cardValuelist.GroupBy(x => x).ToList();
            var pairVal          = vals.Any(g => g.Count() > 1);
            #endregion

            #region Poker Hand (Pair)
            if (pairVal)
            {
                #region threeOfAKind
                var threeOfAKind = vals.FirstOrDefault(g => g.Count() == 3);
                var pairs        = vals.Where(g => g.Count() == 2).ToList();

                if (threeOfAKind != null && pairs.Any())
                {
                    category         = PokerHand.FullHouse;
                    first            = threeOfAKind.Key;
                    second           = pairs.First().Key;
                    pokerDescription = string.Format("FullHouse, {0}s over {1}s", (CardValue)threeOfAKind.Key, (CardValue)pairs.First().Key);
                }
                else if (threeOfAKind != null)
                {
                    category         = PokerHand.ThreeOfAKind;
                    first            = threeOfAKind.Key;
                    second           = cardValuelist.Where(x => x != threeOfAKind.Key).Max();
                    third            = cardValuelist.Where(x => x != threeOfAKind.Key).Min();
                    pokerDescription = string.Format("Set of {0}s", (CardValue)threeOfAKind.Key);
                }
                #endregion
                #region TwoPair
                else if (pairs.Count() == 2)
                {
                    category         = PokerHand.TwoPair;
                    first            = pairs.Select(p => p.Key).Max();
                    second           = pairs.Select(p => p.Key).Min();
                    third            = vals.First(g => g.Count() == 1).Key;
                    pokerDescription = string.Format("Two Pair, {0}s over {1}s", (CardValue)first, (CardValue)second);
                }
                #endregion
                #region OnePair
                else if (pairs.Count == 1)
                {
                    category = PokerHand.OnePair;
                    first    = pairs.First().Key;
                    var otherCards = vals.Where(g => g.Count() == 1).Select(g => g.Key).OrderBy(x => x).ToList();
                    second           = otherCards[0];
                    third            = otherCards[1];
                    third_2          = otherCards[2];
                    pokerDescription = string.Format("Pair of {0}s", (CardValue)first);
                }
                #endregion
            }
            #endregion
            #region Poker Hand HighCard (NotSet)
            if (category == PokerHand.NotSet)
            {
                #region HighCard
                category = PokerHand.HighCard;
                var orderedCards = cardValuelist.OrderByDescending(x => x).ToList();
                first            = orderedCards[0];
                second           = orderedCards[1];
                third            = orderedCards[2];
                third_2          = orderedCards[3];
                third_3          = orderedCards[4];
                pokerDescription = (CardValue)first + " HighCard";
                #endregion
            }
            #endregion

            var result = ((int)category * 10000000000) + (first * 100000000) + (second * 1000000) + (third * 10000) + (third_2 * 100) + third_3;

            cardStength.Description = pokerDescription;
            cardStength.Strength    = result;

            return(cardStength);
        }
Exemple #2
0
    public void AssignMoveStruct(string type, string speed, string height, string strength, string name)
    {
        cardName = name;

        switch (type)
        {
        case "ATTACK":
            cardType = CardType.ATTACK;
            break;

        case "DEFEND":
            cardType = CardType.DEFEND;
            break;

        default:
            Debug.LogError("Unknown Move Type!");
            break;
        }
        switch (speed)
        {
        case "FAST":
            cardSpeed = CardSpeed.FAST;
            break;

        case "MEDIUM":
            cardSpeed = CardSpeed.MEDIUM;
            break;

        case "SLOW":
            cardSpeed = CardSpeed.SLOW;
            break;

        default:
            Debug.LogError("Unknown Move Speed!");
            break;
        }
        switch (height)
        {
        case "HIGH":
            cardHeight = CardHeight.HIGH;
            break;

        case "MID":
            cardHeight = CardHeight.MID;
            break;

        case "LOW":
            cardHeight = CardHeight.LOW;
            break;

        default:
            Debug.LogError("Unknown Move Height!");
            break;
        }
        switch (strength)
        {
        case "STRONG":
            cardStrength = CardStrength.STRONG;
            break;

        case "MODERATE":
            cardStrength = CardStrength.MODERATE;
            break;

        case "WEAK":
            cardStrength = CardStrength.WEAK;
            break;

        default:
            Debug.LogError("Unknown Move Strength!");
            break;
        }
    }