From eed6713e55d761ce6ad4b649e8033886385481c7 Mon Sep 17 00:00:00 2001 From: chicrobot Date: Fri, 31 Jul 2026 20:22:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=BE=E7=BD=AE=E5=9C=BA?= =?UTF-8?q?=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/scenes.py | 2 ++ src/scenes/config_scene.py | 23 +++++++++++++++++++++++ src/scenes/main_menu_scene.py | 30 +++++++++++++++--------------- 3 files changed, 40 insertions(+), 15 deletions(-) create mode 100644 src/scenes/config_scene.py diff --git a/src/config/scenes.py b/src/config/scenes.py index cbe7573..698393d 100644 --- a/src/config/scenes.py +++ b/src/config/scenes.py @@ -1,3 +1,4 @@ +from src.scenes.config_scene import ConfigScene from src.scenes.empty_scene import EmptyScene from src.scenes.main_menu_scene import MainMenuScene from src.scenes.game_scene import GameScene @@ -7,4 +8,5 @@ scene_dict = { "MainMenuScene": MainMenuScene, "GameScene": GameScene, "EmptyScene": EmptyScene, + "ConfigScene": ConfigScene, } diff --git a/src/scenes/config_scene.py b/src/scenes/config_scene.py new file mode 100644 index 0000000..7c21cc2 --- /dev/null +++ b/src/scenes/config_scene.py @@ -0,0 +1,23 @@ +import pygame + +from src.scenes.base_scene import BaseScene + + +class ConfigScene(BaseScene): + name = "ConfigScene" # 场景名称 + + def __init__(self, screen): + super().__init__(screen) + + def update(self, dt=0): + """ + 场景每帧更新逻辑 + """ + + def handle_event(self, event): + """ + 接收主循环传来的事件并处理 + """ + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + self.switch_to_scene("MainMenuScene") diff --git a/src/scenes/main_menu_scene.py b/src/scenes/main_menu_scene.py index 6a4766a..1102765 100644 --- a/src/scenes/main_menu_scene.py +++ b/src/scenes/main_menu_scene.py @@ -140,19 +140,6 @@ class MainMenuScene(BaseScene): # 触发选项处理 self.__handle_option() - def __handle_option(self): - """ - 处理选项,根据id执行 - """ - if self.select_id is None: - return - elif self.select_id == 0: - self.switch_to_scene("GameScene") - elif self.select_id == 1: - self.switch_to_scene("OptionScene") - elif self.select_id == len(self.text_rect_list) - 1: - self.exit() - def __rain_list_append(self, status=0): """ 向列表中添加一个雨滴,默认状态为0 @@ -169,14 +156,27 @@ class MainMenuScene(BaseScene): def __init_text_list(self): # 文本 text_list = [ - "开始游戏(Z和X)", + "开始游戏", "设置", - "退出游戏(ESC)", + "退出游戏", ] # 转换为文本框 for text_str in text_list: self.text_rect_list.append(self.font.render(text_str, True, Color.white)) + def __handle_option(self): + """ + 处理选项,根据id执行 + """ + if self.select_id is None: + return + elif self.select_id == 0: + self.switch_to_scene("GameScene") + elif self.select_id == 1: + self.switch_to_scene("ConfigScene") + elif self.select_id == len(self.text_rect_list) - 1: + self.exit() + def __show_ui(self): """ 显示所有选项