def get_state(self, players, player_id): ''' Get player's state Args: players (list): The list of UnoPlayer player_id (int): The id of the player ''' state = {} player = players[player_id] state['hand'] = cards2list(player.hand) state['target'] = self.target.str state['played_cards'] = cards2list(self.played_cards) next_player = self.current_player next_player = (next_player + self.direction) % self.num_players state['next_player_amount'] = len(players[next_player].hand) others_hand = [] for player in players: if player.player_id != player_id: others_hand.extend(player.hand) state['others_hand'] = cards2list(others_hand) state['legal_actions'] = self.get_legal_actions(players, player_id) state['card_num'] = [] for player in players: state['card_num'].append(len(player.hand)) return state
def get_perfect_information(self): ''' Get the perfect information of the current state Returns: (dict): A dictionary of all the perfect information of the current state ''' state = {} state['player_num'] = self.game.get_player_num() state['hand_cards'] = [cards2list(player.hand) for player in self.game.players] state['played_cards'] = cards2list(self.game.round.played_cards) state['target'] = self.game.round.target.str state['current_player'] = self.game.round.current_player state['legal_actions'] = self.game.round.get_legal_actions( self.game.players, state['current_player']) return state
def get_state(self, players, player_id): ''' Get player's state Args: players (list): The list of UnoPlayer player_id (int): The id of the player ''' state = {} player = players[player_id] state['hand'] = cards2list(player.hand) state['target'] = self.target.str state['played_cards'] = cards2list(self.played_cards) state['legal_actions'] = self.get_legal_actions(players, player_id) state['card_num'] = [] for player in players: state['card_num'].append(len(player.hand)) return state
def get_state(self, players, player_id): ''' Get player's state Args: players (list): The list of UnoPlayer player_id (int): The id of the player ''' state = {} player = players[player_id] state['hand'] = cards2list(player.hand) state['target'] = self.target.str state['played_cards'] = cards2list(self.played_cards) others_hand = [] for player in players: if player.player_id != player_id: others_hand.extend(player.hand) state['others_hand'] = cards2list(others_hand) state['legal_actions'] = self.get_legal_actions(players, player_id) return state