예제 #1
0
        private void GetBoardCards(String boardString, ref long board, ref int count, int max)
        {
            board = 0;
            count = 0;

            int pos = 0;

            while (!boardString.Equals(""))
            {
                pos += boardString.Length;
                TrimLeft(ref boardString, " ,.");
                pos -= boardString.Length;

                if (boardString.Equals(""))
                {
                    break;
                }

                int rank = GetRank(boardString[0]);
                if (rank < 0)
                {
                    throw new ArgumentException("Can't parse rank value", "boardString");
                }

                boardString = boardString.Substring(1);
                pos        += 1;

                if (boardString.Equals(""))
                {
                    break;
                }

                int suit = GetSuit(boardString[0]);
                if (suit < 0)
                {
                    throw new ArgumentException("Can't parse suit value", "boardString");
                }

                boardString = boardString.Substring(1);
                pos        += 1;

                long mask = WeightTable.GetCardMask(suit * 13 + rank);
                if ((mask & board) > 0)
                {
                    throw new ArgumentException("Board contains duplicate cards", "boardString");
                }

                board |= mask;

                count++;
            }

            if (count > max)
            {
                throw new ArgumentOutOfRangeException("boardString", count, "Board contains too many cards");
            }
        }
예제 #2
0
        private void GetHoldem6PlusDeadCards(ref long dead)
        {
            dead = 0;

            for (var rank = 0; rank < 4; rank++)
            {
                for (var suit = 0; suit < 4; suit++)
                {
                    long mask = WeightTable.GetCardMask(suit * 13 + rank);

                    dead |= mask;
                }
            }
        }