Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)