public Pocket(string s)
            {
                if (s.Length != 2 && s.Length != 3)
                {
                    throw new ArgumentException();
                }

                _text = s;

                int r1 = StdDeck.RankFromChar(s[0]);
                int r2 = StdDeck.RankFromChar(s[1]);

                _c1 = StdDeck.IndexFromRankAndSuit(r1, (int)StdDeck.Suit.Clubs);

                if (s.Length == 2)
                {
                    _c2 = StdDeck.IndexFromRankAndSuit(r2, (int)StdDeck.Suit.Diamonds);
                }
                else if (s[2] == 's')
                {
                    _c2 = StdDeck.IndexFromRankAndSuit(r2, (int)StdDeck.Suit.Clubs);
                }
                else if (s[2] == 'o')
                {
                    _c2 = StdDeck.IndexFromRankAndSuit(r2, (int)StdDeck.Suit.Diamonds);
                }
                else
                {
                    throw new ArgumentException();
                }
            }
Example #2
0
        int Combin(int n)
        {
            int deckSize  = StdDeck.Descriptor.Size;
            int suitCount = 4;

            CardSet[] deck = new CardSet[52];
            int       i    = 0;

            for (int r = 12; r >= 0; --r)
            {
                for (int s = 0; s < 4; ++s)
                {
                    deck[i++] = StdDeck.Descriptor.CardSets[StdDeck.IndexFromRankAndSuit(r, s)];
                }
            }
            int counter = 0;

            CombinRecursive(deck, suitCount, deckSize, n, 0, CardSet.Empty, -1, suitCount - 1, -1, ref counter);
            return(counter);
        }