def run(self): g.init() if not self.journal: utils.load() load_save.retrieve() g.puzzle_n=g.solved if g.puzzle_n==10: g.puzzle_n=0 iq1.init(); iq1.setup() if self.canvas<>None: self.canvas.grab_focus() ctrl=False pygame.key.set_repeat(600,120); key_ms=pygame.time.get_ticks() going=True while going: if self.journal: # Pump GTK messages. while Gtk.events_pending(): Gtk.main_iteration() # Pump PyGame messages. for event in pygame.event.get(): if event.type==pygame.QUIT: if not self.journal: utils.save() going=False elif event.type == pygame.MOUSEMOTION: g.pos=event.pos g.redraw=True if self.canvas<>None: self.canvas.grab_focus() elif event.type == pygame.MOUSEBUTTONDOWN: g.redraw=True if event.button==1: self.do_click(); self.flush_queue() elif event.type == pygame.KEYDOWN: # throttle keyboard repeat if pygame.time.get_ticks()-key_ms>110: key_ms=pygame.time.get_ticks() if ctrl: if event.key==pygame.K_q: if not self.journal: utils.save() going=False; break else: ctrl=False if event.key in (pygame.K_LCTRL,pygame.K_RCTRL): ctrl=True; break self.do_key(event.key); g.redraw=True self.flush_queue() elif event.type == pygame.KEYUP: ctrl=False if not going: break if g.redraw: self.display() if g.version_display: utils.version_display() g.screen.blit(g.pointer,g.pos) pygame.display.flip() g.redraw=False iq1.complete() if g.finished and not g.redrawn: g.redraw=True; g.redrawn=True g.clock.tick(40)
def display(self): g.screen.fill((128,0,0)) iq1.draw() if iq1.complete(): utils.centre_blit(g.screen,g.smiley,g.smiley_c)