From b8b95377ce6abe13791760765c1f944608300369 Mon Sep 17 00:00:00 2001 From: chicrobot Date: Thu, 30 Jul 2026 23:08:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=82=B9=E5=87=BB=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E6=8A=AC=E8=B5=B7=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scenes/main_menu_scene.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/scenes/main_menu_scene.py b/src/scenes/main_menu_scene.py index 04b8f28..26f4717 100644 --- a/src/scenes/main_menu_scene.py +++ b/src/scenes/main_menu_scene.py @@ -18,7 +18,8 @@ class MainMenuScene(BaseScene): """ super().__init__(screen, clock) self.button_status = False - self.mouse_status = False + self.mouse_status = None + self.mouse_last_status = None self.debug_status = False self.secret_keys = ["w","w","s","s","a","d","a","d"] # 上上下下左右左右 self.secret_key_compare_num = 0 @@ -56,6 +57,8 @@ class MainMenuScene(BaseScene): # 更新鼠标位置 self.mouse_pos = pygame.mouse.get_pos() + # 更新当前帧鼠标状态 + self.mouse_last_status = self.mouse_status def handle_event(self, event): """ @@ -74,8 +77,22 @@ class MainMenuScene(BaseScene): else: self.secret_key_compare_num = 0 - elif event.type == pygame.MOUSEBUTTONDOWN: - self.mouse_status = True + # 鼠标事件 + if event.type == pygame.MOUSEBUTTONDOWN: + self.mouse_status = "down" + elif event.type == pygame.MOUSEBUTTONUP: + self.mouse_status = "up" + elif event.type == pygame.MOUSEMOTION: + self.mouse_status = "move" + + def __click(self): + """ + 判断是否点击鼠标:鼠标抬起时,上一帧的状态如果是按下或者移动则判断为点击 + """ + if self.mouse_status == "up": + if self.mouse_last_status in ["down", "move"]: + return True + return False def __show(self, info, dest=(0, 0)): """ @@ -127,7 +144,7 @@ class MainMenuScene(BaseScene): and text_rect.x < self.mouse_pos[0] < text_rect.x + text_rect.width: pygame.draw.rect(self.screen, Color.white, text_rect, 1) # 如果点击鼠标 - if self.mouse_status: + if self.__click(): # 点击第一个选项 if count == 0: self.switch_to_scene("GameScene")