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"); } }
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; } } }