Ejemplo n.º 1
0
class GameController():
    def __init__(self, model, view):
        pygame.init()
        self.model = model
        self.view = view
        self.state_manager = StateManager()
        self.state_manager.push(States.MENU)

    def update(self):
        state = self.state_manager.current()
        events = pygame.event.get()
        keyboard_events = [e for e in events if e.type == pygame.KEYDOWN]
        # ---
        if state == States.MENU:
            self.handle_menu(keyboard_events)
            self.view.draw_menu(self.model.menu)
        elif state == States.PLAY:
            self.handle_play(keyboard_events)
            self.view.draw_play(self.model.play)
        elif state == States.CONTINUE:
            pass
        elif state == States.WIN:
            self.view.draw_win()
        elif state == States.LOSE:
            pass
        elif state == States.EXIT:
            self.handle_exit()
        # ---
        for event in events:
            if event.type == pygame.QUIT:
                sys.exit()
        pygame.display.flip()

    def handle_menu(self, keyboard_events):
        menu = self.model.menu
        for event in keyboard_events:
            if (event.key == pygame.K_UP):
                menu.select_previous()
            elif (event.key == pygame.K_DOWN):
                menu.select_next()
            elif (event.key == pygame.K_SPACE):
                selected_state = menu.get_option_selected_state()
                self.state_manager.push(selected_state)

    def handle_play(self, keyboard_events):
        play = self.model.play
        for event in keyboard_events:
            if (event.key == pygame.K_UP):
                play.move_cursor_up()
            elif (event.key == pygame.K_DOWN):
                play.move_cursor_down()
            elif (event.key == pygame.K_LEFT):
                play.move_cursor_left()
            elif (event.key == pygame.K_RIGHT):
                play.move_cursor_right()
            elif (event.key == pygame.K_SPACE):
                play.toggle_cursor_carry()
            elif (event.key == pygame.K_RETURN):
                play.make_guess(self.state_manager)

    def handle_continue(self, keyboard_events):
        pass

    def handle_win(self, keyboard_events):
        pass

    def handle_lose(self, keyboard_events):
        pass

    def handle_exit(self):
        sys.exit()