def run(self): key_actions = { 'ESCAPE': self.quit, 'LEFT': lambda:self.move(-1), 'RIGHT': lambda:self.move(+1), 'DOWN': lambda:self.drop(True), 'UP': self.rotate_stone, 'p': self.toggle_pause, 'SPACE': self.start_game, 'RETURN': self.insta_drop } self.gameover = False self.paused = False dont_burn_my_cpu = Ui.get_clock() while 1: self.screen.fill((0,0,0)) if self.gameover: self.center_msg("""Game Over!\nYour score: %d Press space to continue""" % self.score) else: if self.paused: self.center_msg("Paused") else: Ui.draw_line(self.screen, self.rlim+1, self.height-1) self.disp_msg("Next:", ( self.rlim+cell_size, 2)) self.disp_msg("Score: %d\n\nLevel: %d\ \nLines: %d" % (self.score, self.level, self.lines), (self.rlim+cell_size, cell_size*5)) self.draw_matrix(self.bground_grid, (0,0)) self.draw_matrix(self.board, (0,0)) self.draw_matrix(self.stone, (self.stone_x, self.stone_y)) self.draw_matrix(self.next_stone, (cols+1,2)) Ui.update() for event in Ui.get_events(): if Ui.is_user_event(event): self.drop(False) elif Ui.is_quit_event(event): self.quit() elif Ui.is_keydown_event(event): for key in key_actions: if Ui.is_correct_key(event, key): key_actions[key]() dont_burn_my_cpu.tick(maxfps)