class App(object): WIN_SIZE = conf.WIN_SIZE def __init__(self): pg.init() # joy stick pg.joystick.init() try: self.joystick = pg.joystick.Joystick(0) self.joystick.init() print 'Enabled joystick: ' + self.joystick.get_name() except pg.error: print 'no joystick found.' self.joystick = None self._running = True self.display_surf = None self.level = None self.player = None self.timer = None def on_init(self): pg.display.set_caption("PyMario") self.display_surf = pg.display.set_mode( self.WIN_SIZE, pg.HWSURFACE | pg.DOUBLEBUF ) self._running = True # timer fps self.timer = pg.time.Clock() # camera # self.camera = Camera(level_width=len(Level.MAP[0]) * 30, # level_height=len(Level.MAP) * 30) self.camera = Camera(level_width=100 * 30, level_height=20 * 30) # create level self.level = Level(surface=self.display_surf, camera=self.camera) # create player self.player = Player(60, 60, surface=self.display_surf, camera=self.camera) def on_execute(self): if self.on_init() == False: self._running = False while self._running: self.timer.tick(conf.FPS) for event in pg.event.get(): self.on_event(event) self.on_loop() self.on_render() self._on_cleanup() def on_event(self, event): self._listen_event(event) self.player.listen_event(event, joystick=self.joystick) def on_loop(self): # center camera on player self.camera.update(self.player) # update mario self.player.update(self.level.get_elements()) def on_render(self): # render level self.level.render() self.player.render() pg.display.update() def _on_cleanup(self): pg.quit() def _listen_event(self, event): if event.type == pg.QUIT: self._running = False