添加两种按键判断方式:同时按下,按键序列
This commit is contained in:
1 parent
c1984518d7
commit
2c3e4f5e37
3 files changed
+37
-3
No files matched your search
@@ -1,3 +1,4 @@
|
||||
from src.scenes.empty_scene import EmptyScene
|
||||
from src.scenes.main_menu_scene import MainMenuScene
|
||||
from src.scenes.game_scene import GameScene
|
||||
|
||||
@@ -5,4 +6,5 @@ from src.scenes.game_scene import GameScene
|
||||
scene_dict = {
|
||||
"MainMenuScene": MainMenuScene,
|
||||
"GameScene": GameScene,
|
||||
"EmptyScene": EmptyScene,
|
||||
}
|
||||
@@ -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):
|
||||
"""
|
||||
接收主循环传来的事件并处理
|
||||
"""
|
||||
@@ -18,13 +18,16 @@ class MainMenuScene(BaseScene):
|
||||
"""
|
||||
super().__init__(screen, clock)
|
||||
self.button_status = False
|
||||
self.mouse_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")
|
||||
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
|
||||
@@ -38,6 +41,9 @@ class MainMenuScene(BaseScene):
|
||||
# 按键按下则切换场景
|
||||
if self.button_status:
|
||||
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() # 获取屏幕矩形
|
||||
@@ -59,12 +65,20 @@ class MainMenuScene(BaseScene):
|
||||
接收主循环传来的事件并处理
|
||||
"""
|
||||
if event.type == pygame.KEYDOWN:
|
||||
keys = pygame.key.get_pressed() # 获取所有按键状态,用于组合按键判断
|
||||
if event.key == pygame.K_ESCAPE:
|
||||
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:
|
||||
self.button_status = True
|
||||
self.secret_key_compare_num = 0
|
||||
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||
self.button_status = True
|
||||
self.mouse_status = True
|
||||
|
||||
def __show(self, info, dest=(0, 0)):
|
||||
"""
|
||||
|
||||
Reference in new issue
Block a user