def __init__(self, n_seats, ranking_encoding='norm', concat=True, drop_cards=False, split_cards=False): self.n_seats = n_seats self.ranking_encoding = ranking_encoding self._deck = np.array(Deck.GetFullDeck(), dtype=np.int64) self._deck_alt = np.concatenate((np.array([-1], dtype=np.int64), self._deck)) self._evaluator = Evaluator() self.concat = concat
def __init__(self, n_seats, ranking_encoding='norm'): self.n_seats = n_seats self.ranking_encoding = ranking_encoding self.n_dim = 265 + 104 + 6 + n_seats + 6 * n_seats + (7463 if ranking_encoding == 'one-hot' else 1 if ranking_encoding == 'norm' else 0) self._deck = np.array(Deck.GetFullDeck(), dtype=np.int64) self._deck_alt = np.concatenate((np.array([-1], dtype=np.int64), self._deck)) self._evaluator = Evaluator()
def get_card_dict(): deck = Deck() deck_list = deck.GetFullDeck() dict = {} for i, value in enumerate(deck_list): dict[value] = i return dict
def init_game(self, SB, BB, GameState): """ :param SB: :param BB: :param GameState: :return: """ self.GameState = GameState self.SB = SB self.BB = BB self.players = ['_', self.SB, self.BB] # creating mapping of card bit int to int to make # it easier for tracking state deck = Deck.GetFullDeck() deck_dict = {} for i in range(len(deck)): deck_dict[deck[i]] = i self.deck_lookup = deck_dict
def reset(self): self.pot = 0 self.street = GameState.PREFLOP self.cards = [] self.deck.cards = Deck.GetFullDeck() self.rng.shuffle(self.deck.cards) self.rng.shuffle(self.players) self.active_players = self.n_players initial_draw = self.deck.draw(self.n_players * 2) for i, player in enumerate(self.players): player.reset() player.position = i player.cards = [initial_draw[i], initial_draw[i+self.n_players]] player.stack = self.rng.integers(self.stack_low, self.stack_high, 1)[0] self.bet_to_match = 0 self.history = []