Esempio n. 1
0
        public kindsOfCombination validCards()
        {
            if (Chosen.Count == 0)
            {
                return(null);
            }
            if (Chosen.Count == 1) //single card
            {
                return(new kindsOfCombination(Kind.Single, 0, (int)Chosen[0].rank));
            }
            Chosen.Sort();
            if (Chosen.Count == 2)
            {
                if (Chosen[0].rank == (Rank)16 && Chosen[1].rank == (Rank)17)
                {
                    return(new kindsOfCombination(Kind.Bomb, 0, (int)Chosen[0].rank)); //a kind
                }
                if (Chosen[0].rank == Chosen[1].rank)
                {
                    return(new kindsOfCombination(Kind.Pair, 0, (int)Chosen[0].rank)); //pair
                }
                return(null);
            }
            if (Chosen.Count == 3)
            {
                if (Chosen[0].rank == Chosen[1].rank && Chosen[0].rank == Chosen[2].rank)
                {
                    return(new kindsOfCombination(Kind.Three, 0, (int)Chosen[0].rank)); //3 a kind
                }
                return(null);
            }
            if (Chosen.Count == 4)
            {
                if (Chosen[0].rank == Chosen[1].rank && Chosen[0].rank == Chosen[2].rank && Chosen[0].rank == Chosen[3].rank)
                {
                    return(new kindsOfCombination(Kind.Bomb, 0, (int)Chosen[0].rank)); //a kind
                }
                if (Chosen[0].rank == Chosen[1].rank && Chosen[0].rank == Chosen[2].rank)
                {
                    return(new kindsOfCombination(Kind.Three, 1, (int)Chosen[0].rank)); //3 a kind
                }
                if (Chosen[1].rank == Chosen[2].rank && Chosen[1].rank == Chosen[3].rank)
                {
                    return(new kindsOfCombination(Kind.Three, 1, (int)Chosen[1].rank)); //3 a kind
                }
                return(null);
            }
            if (Chosen.Count == 5)
            {
                if (Chosen[0].rank == Chosen[1].rank && Chosen[0].rank == Chosen[2].rank && Chosen[3].rank == Chosen[4].rank)
                {
                    return(new kindsOfCombination(Kind.Three, 2, (int)Chosen[0].rank)); //full house
                }
                if (Chosen[0].rank == Chosen[1].rank && Chosen[2].rank == Chosen[3].rank && Chosen[2].rank == Chosen[4].rank)
                {
                    return(new kindsOfCombination(Kind.Three, 2, (int)Chosen[2].rank)); //full house
                }
            }
            if (Chosen.Count >= 6 && Chosen.Count % 2 == 0)
            {
                bool straightPair = true;
                if (Chosen[0].rank != Chosen[1].rank)
                {
                    straightPair = false;
                }
                for (int i = 2; i < Chosen.Count % 2; i += 2)
                {
                    if (Chosen[i].rank != (Chosen[i - 1].rank + 1) || Chosen[i].rank != Chosen[i + 1].rank)
                    {
                        straightPair = false;
                        break;
                    }
                }
                if (straightPair && Chosen[Chosen.Count - 1].rank <= (Rank)14)
                {
                    return(new kindsOfCombination(Kind.StraightPair, Chosen.Count % 2, (int)Chosen[0].rank)); //StraightPair
                }
            }
            bool straight = true;

            for (int i = 1; i < Chosen.Count; i++)
            {
                if (Chosen[i].rank != Chosen[i - 1].rank + 1)
                {
                    straight = false;
                    break;
                }
            }
            if (straight && Chosen[Chosen.Count - 1].rank <= (Rank)14)
            {
                return(new kindsOfCombination(Kind.Straight, Chosen.Count, (int)Chosen[0].rank)); //Straight
            }
            return(null);
        }