import pygame from pygame.locals import * from event import * ## Sends clockticks to everything to keep the game ## running. class clock(listener): def __init__(self, fps): self.clock = pygame.time.Clock() self.quit = False self.fps = fps def notify(self, event): if isinstance(event, quit_event): self.quit = True def run(self): while not self.quit: self.clock.tick(self.fps) self.event_handler.announce(tick_event()) ## Takes care of mouse & keyboard inputs in the ## pygame event queue and pass them to the ## event handler. class input(listener): def notify(self, event): if isinstance(event, tick_event): self.handle_events() def handle_events(self): for event in pygame.event.get(): ## Take care of the keyboard events.. if event.type == KEYDOWN: print "keyboard: Keypress detected." if event.key == K_ESCAPE: print "keyboard: Sending quit event." self.event_handler.announce(quit_event()) else: print "keyboard: Sending key event." key_event = keyboard_event(event.key) self.event_handler.announce(key_event) ## .. and the mouse events. elif event.type == MOUSEMOTION: mouse_event = mouse_moved_event(event.pos) self.event_handler.announce(mouse_event) elif event.type == MOUSEBUTTONDOWN: print "mouse: Mouse button down detected." mouse_event = mouse_pressed_event(event.pos) self.event_handler.announce(mouse_event)