def update(self, delta): self.elapsed_time += delta self.handle_user_input() if self.elapsed_time >= self.drop_time: if self.board.are_valid_coordinates( self.current_piece.move_result(Direction.Down)): renderer.clear_tetromino(self.current_piece, self.board_window) self.current_piece.move(Direction.Down) else: renderer.clear_tetromino(self.next_piece, self.info_window) try: self.board.lock_tetromino(self.current_piece) self.current_piece = self.next_piece self.current_piece.set_location(5, 20) self.next_piece = random_tetromino(0, 0) rows_removed = self.board.clear_full_rows() if rows_removed: self.lines_to_next_level -= rows_removed self.score += sum(range(rows_removed + 1)) * 100 if self.lines_to_next_level <= 0: self.score += 1000 * self.level self.lines_to_next_level = 15 self.level += 1 self.drop_time *= .75 except RuntimeError: game.add_state_and_switch("game over", GameOverState(self.window, self.score)) self.view_modified = True self.elapsed_time -= self.drop_time
def main(window): renderer.initialize() curses.curs_set(0) dimens = window.getmaxyx() main_window = window.subwin(22, 20, dimens[0] // 2 - 11, dimens[1] // 2 - 10) main_window.nodelay(1) main_window.keypad(1) game.init() game.add_state_and_switch("main_menu", MainMenuState(main_window)) game.add_state("paused", PauseState(main_window)) game.add_state("game", GameState(main_window)) game.run()
def __init__(self, window): super().__init__(window) self.choices = (("New Game", lambda: game.switch_to_state("game", "restart")), ("Help", lambda: game.add_state_and_switch( "help", HelpState(self.window, "paused"))), ("Quit", lambda: game.switch_to_state("finished"))) self.lines_to_skip = 4 self.line_to_start = 9