添加两种按键判断方式:同时按下,按键序列

This commit is contained in:
chicrobot committed 2026-07-28 00:34:57 +08:00
1 parent c1984518d7
commit 2c3e4f5e37
3 files changed
+37 -3

No files matched your search

+2
View File
@@ -1,3 +1,4 @@
from src.scenes.empty_scene import EmptyScene
from src.scenes.main_menu_scene import MainMenuScene from src.scenes.main_menu_scene import MainMenuScene
from src.scenes.game_scene import GameScene from src.scenes.game_scene import GameScene
@@ -5,4 +6,5 @@ from src.scenes.game_scene import GameScene
scene_dict = { scene_dict = {
"MainMenuScene": MainMenuScene, "MainMenuScene": MainMenuScene,
"GameScene": GameScene, "GameScene": GameScene,
"EmptyScene": EmptyScene,
} }
+18
View File
@@ -0,0 +1,18 @@
from src.scenes.base_scene import BaseScene
class EmptyScene(BaseScene):
name = "EmptyScene" # 场景名称
def __init__(self, screen, clock):
super().__init__(screen, clock)
def update(self):
"""
场景每帧更新逻辑
"""
def handle_event(self, event):
"""
接收主循环传来的事件并处理
"""
+17 -3
View File
@@ -18,13 +18,16 @@ class MainMenuScene(BaseScene):
""" """
super().__init__(screen, clock) super().__init__(screen, clock)
self.button_status = False self.button_status = False
self.mouse_status = False
self.debug_status = False self.debug_status = False
self.secret_keys = ["w","w","s","s","a","d","a","d"] # 上上下下左右左右
self.secret_key_compare_num = 0
# 设置字体 # 设置字体
font_file = os.path.join(data_path(),"Dymon-ShouXieTi.otf") font_file = os.path.join(data_path(),"Dymon-ShouXieTi.otf")
self.font = pygame.font.Font(font_file,16) self.font = pygame.font.Font(font_file,16)
# 文本 # 文本
self.game_info_text = self.font.render('按任意键开始游戏,ESC退出', True, Color.white) self.game_info_text = self.font.render('同时按下Z和X开始游戏,按ESC退出', True, Color.white)
# 雨滴列表 # 雨滴列表
self.rain_max = 50 self.rain_max = 50
@@ -38,6 +41,9 @@ class MainMenuScene(BaseScene):
# 按键按下则切换场景 # 按键按下则切换场景
if self.button_status: if self.button_status:
self.switch_to_scene("GameScene") self.switch_to_scene("GameScene")
if self.secret_key_compare_num == len(self.secret_keys):
print("我去,是通关秘籍!")
self.switch_to_scene("EmptyScene")
# 显示提示文本 # 显示提示文本
screen_rect = self.screen.get_rect() # 获取屏幕矩形 screen_rect = self.screen.get_rect() # 获取屏幕矩形
@@ -59,12 +65,20 @@ class MainMenuScene(BaseScene):
接收主循环传来的事件并处理 接收主循环传来的事件并处理
""" """
if event.type == pygame.KEYDOWN: if event.type == pygame.KEYDOWN:
keys = pygame.key.get_pressed() # 获取所有按键状态,用于组合按键判断
if event.key == pygame.K_ESCAPE: if event.key == pygame.K_ESCAPE:
return "exit" # 主循环接收返回,为exit时设置running为False,退出游戏 return "exit" # 主循环接收返回,为exit时设置running为False,退出游戏
elif keys[pygame.K_z] and keys[pygame.K_x]: # 同时按下Z和X
self.button_status = True
# 判断是否按顺序按下秘籍
if event.unicode.lower() == self.secret_keys[self.secret_key_compare_num]:
self.secret_key_compare_num += 1
else: else:
self.button_status = True self.secret_key_compare_num = 0
elif event.type == pygame.MOUSEBUTTONDOWN: elif event.type == pygame.MOUSEBUTTONDOWN:
self.button_status = True self.mouse_status = True
def __show(self, info, dest=(0, 0)): def __show(self, info, dest=(0, 0)):
""" """