def generate_bonus(self): if len(self.available_bonuses) > 0: if random.randint(1, BONUS_CHANCE) == 1 and len( self.bonuses) < BONUSES_MAX_COUNT: coors = Bonus.generate_coordinates(self.players, self.get_busy_points()) bonus = random.choice(self.available_bonuses)(coors) self.bonuses.append(bonus)
if args.replay: visio = json.load(gzip.open(args.replay)) assert (visio.get('visio_version', 0) >= 2) start_game = visio['visio_info'][0] assert (start_game['type'] == 'start_game') CONSTS.SPEED = start_game['speed'] CONSTS.WIDTH = start_game['width'] CONSTS.X_CELLS_COUNT = start_game['x_cells_count'] CONSTS.Y_CELLS_COUNT = start_game['y_cells_count'] CONSTS.WINDOW_HEIGHT = CONSTS.Y_CELLS_COUNT * CONSTS.WIDTH CONSTS.WINDOW_WIDTH = CONSTS.X_CELLS_COUNT * CONSTS.WIDTH last_tick = 0 BONUS_CLASSES = {bc.visio_name: bc for bc in Bonus.__subclasses__()} org_send_game_tick = Game.send_game_tick def send_game_tick(self: Game): global last_tick last_tick = self.tick try: self.bonuses = [] for b in visio['visio_info'][self.tick]['bonuses']: bb = BONUS_CLASSES[b['type']](b['position']) bb.active_ticks = b['active_ticks'] self.bonuses.append(bb) except: pass org_send_game_tick(self)