我正在为我的A Level项目使用python和pygame模块(创建一个非常基本的,像素化的游戏 - 想想早期的口袋妖怪)并且我使用了event.type函数是代码的两个谨慎部分,使用不同的钥匙完全。第一部分在代码的主要部分工作,但第二部分在函数内,不显示任何输出。
我尝试在程序结束时将两个部分放在一个不同的条件下,以使它们成为现实,但我做的任何事情似乎都无效。它目前已投入使用:
#variable that causes Combat Mode, generates 'random encounter'
PlayerStep = 5
while True:#while the screen is up and the program is running
for event in pygame.event.get():
if event.type == KEYDOWN and PlayerSprite.canMove:
#actions based on which key is pressed
if event.key == K_w:#sprite moves up
PlayerSprite.moveup()
elif event.key == K_s:#sprite moves down
PlayerSprite.movedown()
elif event.key == K_a:#sprite moves right
PlayerSprite.moveright()
elif event.key == K_d:#sprite moves left - no diagonal movement
PlayerSprite.moveleft()
PlayerStep = PlayerStep - 1
pygame.event.pump()
print(KEYDOWN)
pygame.display.update()
if event.type == KEYDOWN and CombatMode() == True:
if KEYDOWN == K_w or KEYDOWN == K_a or KEYDOWN == K_s or KEYDOWN == K_d:
event.key = KEYUP #stops the WASD keys affecting the Combat Mode function
#use the number buttons to attack
if KEYDOWN == K_1:#'attack' option
ClearMsg()
TextBox("You attack!", (60, 50), 32)
MonsterHP = MonsterHP - 2
print(MonsterHP)
if KEYDOWN == K_2:#heal option
PlayerHP = PlayerHP + 10
print(PlayerHP)
if KEYDOWN == K_3:#'item's option
#add square to display list of items
BoxOption((255,250,191), (204,200,153), 150, 50, 400, 300, 4)
if KEYDOWN == K_4:#'flee' option - ends Combat Mode and returns to main screen
break
return
pygame.event.pump()
#gives Player warning when PlayerStep is low
if PlayerStep < 5 and PlayerStep != 0:
TextBox("Wait!", (255,50), 32)
pygame.event.pump()
elif PlayerStep <= 0:#causes Combat Mode when PlayerStep is 0
PlayerSprite.nomove()
Combat_Mode()
pygame.display.update()
对于上下文,代码分为两部分:探索模式和战斗模式。探索模式是精灵四处移动的游戏的主屏幕,战斗模式是回合制战斗系统:在满足条件时调用的功能。
WASD键仍能正常工作,但按下1234键并调用战斗模式功能时没有任何反应。
我对使用pygame很新,但我已经使用python几年了(仍然不是很好,但相当称职)。非常感谢任何帮助!
答案 0 :(得分:1)
你做了:
print(KEYDOWN) (Line 22)
if KEYDOWN == K_w or KEYDOWN == K_a or KEYDOWN == K_s or KEYDOWN == K_d: (Line 26)
if KEYDOWN == K_1: (Line 30)
if KEYDOWN == K_2: (Line 36)
if KEYDOWN == K_3: (Line 40)
if KEYDOWN == K_4: (Line 44)
但您需要将所有KEYDOWN
替换为event.key
而且在第27行,event.key = KEYUP
不起作用。在接近开始时,你所做的所有event.key
都是正确的。