def __init__(self): self.game = Game() self.level = None self.pac = None self.ghosts = [] self.status_box = None self.create_level() self.create_pac() self.create_ghosts() self.create_status_box() frame = Frame(self.game.screen, Rect(660, 220, 200, 200)) self.lives = BarDisplay(frame, self.game, 3, 'p') self.collided = False self.mode = None self.update_mode = self.update_ingame
def __init__(self, screen): self.screen = screen self.frame = Frame(self.screen, Rect(10, 10, 640, 512)) self.tile_factory = TileFactory('data/tiles.conf') self.level = None self.pac = None self.ghosts = [] self.status_box = None self.events = None self.create_level() self.create_pac() self.create_ghosts() self.create_status_box() frame = Frame(self.screen, Rect(660, 220, 200, 200)) self.lives = BarDisplay(frame, self.tile_factory, 3, 'p') self.collided = False self.mode = None self.update_mode = self.update_ingame
class PacGame: def __init__(self): self.game = Game() self.level = None self.pac = None self.ghosts = [] self.status_box = None self.create_level() self.create_pac() self.create_ghosts() self.create_status_box() frame = Frame(self.game.screen, Rect(660, 220, 200, 200)) self.lives = BarDisplay(frame, self.game, 3, 'p') self.collided = False self.mode = None self.update_mode = self.update_ingame def create_level(self): tmap = TiledMap(self.game) level = create_maze(*RANDOM_LEVEL_SIZE) self.level = PacLevel(level, tmap) def create_pac(self): self.pac = Pac(self.game, PAC_START, self.level) self.pac.set_direction(RIGHT) def create_ghosts(self): self.ghosts = [] for pos in GHOST_POSITIONS: self.ghosts.append(Ghost(self.game, pos, self.level)) def reset_level(self): self.pac.sprite.pos = Vector(PAC_START) self.create_ghosts() def create_status_box(self): frame = Frame(self.game.screen, Rect(660, 20, 200, 200)) data = { 'score': 0, 'level': 1, } self.status_box = DictBox(frame, data) def check_collision(self): if self.pac.collision(self.ghosts): self.update_mode = self.update_die self.pac.die() self.collided = True def update_die(self): """finish movements""" if self.pac.sprite.finished: time.sleep(1) self.lives.decrease() if self.lives.value == 0: self.game.exit() else: self.reset_level() self.game.events.empty_event_queue() self.update_mode = self.update_ingame def update_level_complete(self): """finish movement""" if self.pac.sprite.finished: time.sleep(1) self.game.exit() def update_ingame(self): self.check_collision() if self.pac.eaten: self.status_box.data['score'] = self.pac.score self.pac.eaten = None self.score = self.pac.score if self.level.dots_left == 0: self.update_mode = self.update_level_complete def draw(self): self.update_mode() self.level.draw() self.pac.update() self.pac.draw() for g in self.ghosts: g.update() g.draw() self.status_box.draw() self.check_collision() def run(self): self.mode = self.update_ingame self.game.event_loop(figure_moves=self.pac.set_direction, draw_func=self.draw)
class PacGame: def __init__(self, screen): self.screen = screen self.frame = Frame(self.screen, Rect(10, 10, 640, 512)) self.tile_factory = TileFactory('data/tiles.conf') self.level = None self.pac = None self.ghosts = [] self.status_box = None self.events = None self.create_level() self.create_pac() self.create_ghosts() self.create_status_box() frame = Frame(self.screen, Rect(660, 220, 200, 200)) self.lives = BarDisplay(frame, self.tile_factory, 3, 'p') self.collided = False self.mode = None self.update_mode = self.update_ingame def create_level(self): tmap = TiledMap(self.frame, self.tile_factory) self.level = PacLevel(LEVEL, tmap) def create_pac(self): start_pos = Vector(5, 5) self.pac = Pac(self.frame, self.tile_factory, PAC_START, self.level) self.pac.set_direction(RIGHT) def create_ghosts(self): self.ghosts = [] for pos in GHOST_POSITIONS: self.ghosts.append(Ghost(self.frame, self.tile_factory, pos, self.level)) def reset_level(self): self.pac.sprite.pos = PAC_START self.create_ghosts() def create_status_box(self): frame = Frame(self.screen, Rect(660, 20, 200, 200)) data = { 'score': 0, 'level':1, } self.status_box = DictBox(frame, data) def check_collision(self): if self.pac.collision(self.ghosts): self.update_mode = self.update_die self.pac.die() self.collided = True def update_die(self): """finish movements""" if self.pac.sprite.finished: time.sleep(1) self.lives.decrease() if self.lives.value == 0: self.events.exit_signalled() else: self.reset_level() self.events.empty_event_queue() self.update_mode = self.update_ingame def update_level_complete(self): """finish movement""" if self.pac.sprite.finished: time.sleep(1) self.events.exit_signalled() def update_ingame(self): self.check_collision() if self.pac.eaten: self.status_box.data['score'] = self.pac.score self.pac.eaten = None self.score = self.pac.score if self.level.dots_left == 0: self.update_mode = self.update_level_complete def draw(self): self.update_mode() self.level.draw() self.pac.update() self.pac.draw() for g in self.ghosts: g.update() g.draw() self.status_box.draw() pygame.display.update() self.check_collision() time.sleep(0.005) def run(self): self.mode = self.update_ingame self.events = EventGenerator() self.events.add_listener(FigureMoveListener(self.pac.move)) self.events.add_listener(ExitListener(self.events.exit_signalled)) with draw_timer(self, self.events): self.events.event_loop()