예제 #1
0
    def main_menu(self):
        # Create text
        self.intro_text = self.font.render("Snake", True, BLACK)
        self.intro_text_pos = self.intro_text.get_rect()
        self.intro_text_pos.center = ((self.screen_width / 2),
                                      (self.screen_height / 4))

        # Create buttons
        start_button = Button(self.screen, self.font, "Start Game", BLACK,
                              DARK_GREEN, self.intro_text_pos.centerx,
                              self.intro_text_pos.centery + 200)
        start_button.add_paddings(BUTTON_PADX, BUTTON_PADY)

        quit_button = Button(self.screen, self.font, "Quit", BLACK, DARK_RED,
                             self.intro_text_pos.centerx,
                             self.intro_text_pos.centery + 350)
        quit_button.add_paddings(BUTTON_PADX, BUTTON_PADY)

        walls_toggle_button = ToggleButton(self.walls_toggle, self.screen,
                                           self.toggle_font, "Walls: On",
                                           BLACK, DARK_GREEN,
                                           self.intro_text_pos.centerx,
                                           self.intro_text_pos.centery + 100)
        walls_toggle_button.add_paddings(BUTTON_PADX, BUTTON_PADY)
        walls_toggle_button.set_toggle("Walls: On", GREEN, "Walls: Off", RED)

        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.quit()

            self.screen.fill(WHITE)

            # Get mouse action
            mouse_pos = pygame.mouse.get_pos()
            mouse_click = pygame.mouse.get_pressed()

            start_button.mouse_handler(mouse_pos, [mouse_click[0]], True,
                                       GREEN, self.run)
            quit_button.mouse_handler(mouse_pos, [mouse_click[0]], True, RED,
                                      self.quit)

            def walls_switch():
                self.walls_toggle = not self.walls_toggle

            walls_toggle_button.mouse_handler(mouse_pos, [mouse_click[0]],
                                              True, GREEN, walls_switch)

            # Draw text
            self.screen.blit(self.intro_text, self.intro_text_pos)

            # Draw buttons
            start_button.draw()
            quit_button.draw()
            walls_toggle_button.draw()

            pygame.display.update()
            self.clock.tick(FRAMERATE)
예제 #2
0
    def on_pause(self):
        paused = True
        while paused:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.quit()
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        paused = False
            self.screen.fill(GREY)

            # Prepare paused text
            self.paused_text = self.font.render("Paused!", True, BLACK)
            self.paused_text_pos = self.paused_text.get_rect()
            self.paused_text_pos.center = ((self.screen_width / 2),
                                           (self.screen_height / 4))
            self.screen.blit(self.paused_text, self.paused_text_pos)

            instruction_text = self.small_font.render(
                "press esc again to resume", True, BLACK)
            instruction_text_pos = instruction_text.get_rect()
            instruction_text_pos.center = ((self.screen_width / 2),
                                           (self.screen_height / 4 + 100))
            self.screen.blit(instruction_text, instruction_text_pos)

            back_menu_button = Button(self.screen, self.font,
                                      "Back to Main Menu", BLACK, DARK_BLUE,
                                      instruction_text_pos.centerx,
                                      instruction_text_pos.centery + 200)
            back_menu_button.add_paddings(BUTTON_PADX, BUTTON_PADY)

            # Get mouse action
            mouse_pos = pygame.mouse.get_pos()
            mouse_click = pygame.mouse.get_pressed()
            back_menu_button.mouse_handler(mouse_pos, [mouse_click[0]], True,
                                           BLUE, self.main_menu)

            back_menu_button.draw()

            pygame.display.update()
            self.clock.tick(FRAMERATE)
예제 #3
0
    def game_end(self):
        # Create text
        self.endgame_text = self.font.render(
            "Game Over! Score is {}".format(self.score), True, BLACK)
        self.endgame_text_pos = self.endgame_text.get_rect()
        self.endgame_text_pos.center = ((self.screen_width / 2),
                                        (self.screen_height / 4))

        # Create buttons
        try_again_button = Button(self.screen, self.font, "Try Again", BLACK,
                                  DARK_GREEN, self.endgame_text_pos.centerx,
                                  self.endgame_text_pos.centery + 150)
        try_again_button.add_paddings(BUTTON_PADX, BUTTON_PADY)

        quit_button = Button(self.screen, self.font, "Quit", BLACK, DARK_RED,
                             self.endgame_text_pos.centerx,
                             self.endgame_text_pos.centery + 350)
        quit_button.add_paddings(BUTTON_PADX, BUTTON_PADY)

        back_menu_button = Button(self.screen, self.font, "Back to Main Menu",
                                  BLACK, DARK_BLUE,
                                  self.endgame_text_pos.centerx,
                                  self.endgame_text_pos.centery + 250)
        back_menu_button.add_paddings(BUTTON_PADX, BUTTON_PADY)

        end = True
        while end:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.quit()

            self.screen.fill(WHITE)

            mouse_pos = pygame.mouse.get_pos()
            mouse_click = pygame.mouse.get_pressed()

            try_again_button.mouse_handler(mouse_pos, [mouse_click[0]], True,
                                           GREEN, self.run)
            back_menu_button.mouse_handler(mouse_pos, [mouse_click[0]], True,
                                           BLUE, self.main_menu)
            quit_button.mouse_handler(mouse_pos, [mouse_click[0]], True, RED,
                                      self.quit)

            # Draw text
            self.screen.blit(self.endgame_text, self.endgame_text_pos)

            # Draw buttons
            try_again_button.draw()
            back_menu_button.draw()
            quit_button.draw()

            pygame.display.update()
            self.clock.tick(FRAMERATE)