def bankrupt_bank(self, bankrupt_player: Player): logger = logging.getLogger('bankrupt_bank') logger.info('Банк обанкротил игрока {}'.format(bankrupt_player)) if isinstance(bankrupt_player, NeuralNetworkPLayer): bankrupt_player.record(bankrupt_player.env.current_state, bankrupt_player.env.current_action, -self.__rounds_played, None, True) bankrupt_player.balance = 0 for fields in bankrupt_player.mortgage_fields.values(): for field in fields: field.owner = None field.redeem() fields_for_auction = [] for fields in bankrupt_player.owned_fields.values(): for field in fields: if field.kind not in ['utility', 'railway']: field.sell_all_house() field.owner = None fields_for_auction.append(field) self.delete_player(bankrupt_player) if self.game_in_progress: for field in fields_for_auction: self.auction(self.__players, field)
def bankrupt_player(self, bankrupt_player: Player, win_player: Player): logger = logging.getLogger('bankrupt_player') logger.info('Игрок {} обанкротил игрока {}'.format(win_player, bankrupt_player)) amount = 0 if isinstance(bankrupt_player, NeuralNetworkPLayer): bankrupt_player.record(bankrupt_player.env.current_state, bankrupt_player.env.current_action, -self.__rounds_played, None, True) if isinstance(win_player, NeuralNetworkPLayer): win_player.record(win_player.env.current_state, win_player.env.current_action, self.__rounds_played, None, True) for key, fields in bankrupt_player.owned_fields.items(): if key not in ['utility', 'railway']: for field in fields: amount += field.sell_all_house() self.give_money_to_player(win_player, bankrupt_player.balance + amount) bankrupt_player.balance = 0 for fields in bankrupt_player.owned_fields.values(): for field in fields: self.transfer_property_between_players(bankrupt_player, win_player, field) for fields in bankrupt_player.mortgage_fields.values(): for field in fields: self.transfer_mortgage_property(bankrupt_player, win_player, field) self.delete_player(bankrupt_player) self.check_fill_color(win_player)