优化键盘上下选择菜单,由抬起触发修改为按下触发
This commit is contained in:
1 parent
2896919bb9
commit
0159569c68
1 file changed
+47
-8
@@ -24,6 +24,11 @@ class MainMenuScene(BaseScene):
|
|||||||
self.secret_keys = ["w","w","s","s","a","d","a","d"] # 上上下下左右左右
|
self.secret_keys = ["w","w","s","s","a","d","a","d"] # 上上下下左右左右
|
||||||
self.secret_key_compare_num = 0
|
self.secret_key_compare_num = 0
|
||||||
self.select_id = 0
|
self.select_id = 0
|
||||||
|
self.up_status = False
|
||||||
|
self.up_last_status = False
|
||||||
|
self.down_status = False
|
||||||
|
self.down_last_status = False
|
||||||
|
|
||||||
self.mouse_on_option = False
|
self.mouse_on_option = False
|
||||||
self.keyboard_ensure_status = False
|
self.keyboard_ensure_status = False
|
||||||
|
|
||||||
@@ -52,6 +57,11 @@ class MainMenuScene(BaseScene):
|
|||||||
print("我去,是通关秘籍!")
|
print("我去,是通关秘籍!")
|
||||||
self.switch_to_scene("EmptyScene")
|
self.switch_to_scene("EmptyScene")
|
||||||
|
|
||||||
|
if self.__up():
|
||||||
|
self.select_id -= 1
|
||||||
|
if self.__down():
|
||||||
|
self.select_id += 1
|
||||||
|
self.select_id = self.select_id % len(self.text_rect_list)
|
||||||
# 显示选项文本
|
# 显示选项文本
|
||||||
self.__show_ui()
|
self.__show_ui()
|
||||||
|
|
||||||
@@ -68,8 +78,13 @@ class MainMenuScene(BaseScene):
|
|||||||
self.mouse_pos = pygame.mouse.get_pos()
|
self.mouse_pos = pygame.mouse.get_pos()
|
||||||
# 更新当前帧鼠标状态
|
# 更新当前帧鼠标状态
|
||||||
self.mouse_last_status = self.mouse_status
|
self.mouse_last_status = self.mouse_status
|
||||||
|
# 更新当前帧上下按键状态
|
||||||
|
self.up_last_status = self.up_status
|
||||||
|
self.down_last_status = self.down_status
|
||||||
|
|
||||||
# self.__show(self.select_id)
|
# 调试文本
|
||||||
|
# self.__show(self.up_status)
|
||||||
|
# self.__show(self.up_last_status, (0, 20))
|
||||||
|
|
||||||
def handle_event(self, event):
|
def handle_event(self, event):
|
||||||
"""
|
"""
|
||||||
@@ -79,9 +94,10 @@ class MainMenuScene(BaseScene):
|
|||||||
keys = pygame.key.get_pressed() # 获取所有按键状态,用于组合按键判断
|
keys = pygame.key.get_pressed() # 获取所有按键状态,用于组合按键判断
|
||||||
if event.key == pygame.K_ESCAPE:
|
if event.key == pygame.K_ESCAPE:
|
||||||
self.exit() # 退出游戏
|
self.exit() # 退出游戏
|
||||||
elif keys[pygame.K_z] and keys[pygame.K_x]: # 同时按下Z和X
|
if keys[pygame.K_z] and keys[pygame.K_x]: # 同时按下Z和X
|
||||||
self.button_status = True
|
self.button_status = True
|
||||||
elif event.key == pygame.K_SPACE or event.key == pygame.K_RETURN:
|
# 处理空格和enter
|
||||||
|
if event.key == pygame.K_SPACE or event.key == pygame.K_RETURN:
|
||||||
self.keyboard_ensure_status = True
|
self.keyboard_ensure_status = True
|
||||||
else:
|
else:
|
||||||
self.keyboard_ensure_status = False
|
self.keyboard_ensure_status = False
|
||||||
@@ -92,12 +108,18 @@ class MainMenuScene(BaseScene):
|
|||||||
else:
|
else:
|
||||||
self.secret_key_compare_num = 0
|
self.secret_key_compare_num = 0
|
||||||
|
|
||||||
|
# 处理上下键
|
||||||
|
if event.key == pygame.K_UP or event.key == pygame.K_w:
|
||||||
|
self.up_status = True
|
||||||
|
if event.key == pygame.K_DOWN or event.key == pygame.K_s:
|
||||||
|
self.down_status = True
|
||||||
|
|
||||||
if event.type == pygame.KEYUP:
|
if event.type == pygame.KEYUP:
|
||||||
if event.key == pygame.K_w or event.key == pygame.K_UP:
|
# 处理上下键
|
||||||
self.select_id -= 1
|
if event.key == pygame.K_UP or event.key == pygame.K_w:
|
||||||
elif event.key == pygame.K_s or event.key == pygame.K_DOWN:
|
self.up_status = False
|
||||||
self.select_id += 1
|
if event.key == pygame.K_DOWN or event.key == pygame.K_s:
|
||||||
self.select_id = self.select_id % len(self.text_rect_list)
|
self.down_status = False
|
||||||
|
|
||||||
# 鼠标事件
|
# 鼠标事件
|
||||||
if event.type == pygame.MOUSEBUTTONDOWN:
|
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||||
@@ -116,6 +138,23 @@ class MainMenuScene(BaseScene):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def __up(self):
|
||||||
|
"""
|
||||||
|
判断是否按下上键:按下时,上一帧的状态是未按下则判断为按下
|
||||||
|
"""
|
||||||
|
if self.up_status:
|
||||||
|
if not self.up_last_status:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
def __down(self):
|
||||||
|
"""
|
||||||
|
判断是否按下下键:按下时,上一帧的状态是未按下则判断为按下
|
||||||
|
"""
|
||||||
|
if self.down_status:
|
||||||
|
if not self.down_last_status:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def __show(self, info, dest=(0, 0)):
|
def __show(self, info, dest=(0, 0)):
|
||||||
"""
|
"""
|
||||||
显示调试文本
|
显示调试文本
|
||||||
|
|||||||
Reference in new issue
Block a user