forked from zhiyuan/Project1
添加两种按键判断方式:同时按下,按键序列
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.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,
|
||||||
}
|
}
|
||||||
@@ -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)
|
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)):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in new issue
Block a user