class Game: def __init__(self, world, datadir, configdir): self.world = world self.datadir = datadir self.configdir = configdir self.enemies = [] self.stage = Stage(self) self.sprites = Group(self.stage) self.screen = world.screen # Visor de energia para el enemigo self._create_player() self.energy = Energy(10, 10, 100, 10) self.energy.set_model(self.player.id) self.stage.player = self.player self.stage.load_level(1) if VISIBLE_DEBUG: # Visor de rendimiento self.text = Text(world.font, world.fps, "FPS: %d") def _create_player(self): control = Control(0, self.configdir) self.player = Player(self, control, self.sprites, self.datadir) shadow_player = Shadow(self.player, self.datadir) self.sprites.add([self.player, shadow_player]) def update(self): self.stage.update() self.sprites.update() self.energy.update() if VISIBLE_DEBUG: self.text.update() if DEBUG: b1, b2, b3 = pygame.mouse.get_pressed() if b1: self.stage.do_camera_effect() elif b2: self.stage.do_camera_effect(10) elif b3: self.world.fps.slow() def draw(self): self.stage.draw(self.screen) self.sprites.draw(self.screen) self.screen.blit(self.energy.image, self.energy.rect) if VISIBLE_DEBUG: self.screen.blit(self.text.image, self.text.rect) pygame.display.flip()
class Game: "Representa la escena de pelea, donde el shaolin camina por el escenario." def __init__(self, world): self.world = world self.enemies = [] self.sprites = group.Group() self.stage = Stage(self, self.sprites) self.sprites.camera = self.stage self.sprites_in_front = pygame.sprite.RenderPlain() self._create_player() self.stage.object_to_follow = self.player self.stage.load_level(1) if VISIBLE_DEBUG: # Visor de rendimiento self.text = Text(world.font, world.fps, "FPS: %d") self.sprites_in_front.add(self.text) def _create_player(self): self.control = Control() self.player = Player(self, self.control, self.sprites, DATADIR) self.sprites.add(self.player) self.sprites.add(self.player.shadow) self.sprites.add(self.player.bandage) self.energy = energy.EnergyView(10, 10, self.world.font) self.energy.set_model(self.player.energy_model) self.sprites_in_front.add(self.energy) self.enemy_energy = energy.EnergyView(440, 10, self.world.font) self.sprites_in_front.add(self.enemy_energy) def handle_event(self, event): if event.type == pygame.KEYDOWN: self.control.update(event, True) if event.key == pygame.K_ESCAPE: new_scene = scenes.mainmenu.MainMenu(self.world) self.world.change_state(new_scene) elif event.type == pygame.KEYUP: self.control.update(event, False) def update(self): self.stage.update() self.sprites.update() self.sprites_in_front.update() if DEBUG: b1, b2, b3 = pygame.mouse.get_pressed() if b1: self.stage.do_camera_effect() elif b2: self.stage.do_camera_effect(10) elif b3: self.world.fps.slow() self.control.post_update() def draw(self, screen): self.stage.draw(screen) self.sprites.draw(screen) self.sprites_in_front.draw(screen) self.stage.last_draw(screen) pygame.display.flip() def on_player_energy_model_change(self, model): pass def on_enemy_energy_model_change(self, model): self.enemy_energy.set_model(model)