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)
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)
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)