Python 只要我';我拿着一个按钮,一旦松开按钮,就会恢复正常
我正在制作我的第一个游戏。我正在使用Python和PyGame。到目前为止,一切进展顺利,但我遇到了一个似乎无法解决的问题: 我希望我的角色只要按下一个按钮就做一个特定的动作。 通常,当你想让你的角色移动时,我会这样做Python 只要我';我拿着一个按钮,一旦松开按钮,就会恢复正常,python,pygame,Python,Pygame,我正在制作我的第一个游戏。我正在使用Python和PyGame。到目前为止,一切进展顺利,但我遇到了一个似乎无法解决的问题: 我希望我的角色只要按下一个按钮就做一个特定的动作。 通常,当你想让你的角色移动时,我会这样做 if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: 这样,当你按下空格键时,角色会做一些事情,但如果你按住空格键,角色只会做一次。 我想我会这么做的 if event.type == pyg
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
这样,当你按下空格键时,角色会做一些事情,但如果你按住空格键,角色只会做一次。
我想我会这么做的
if event.type == pygame.KEYDOWN:
while event.key = pygame.K_SPACE
但当我运行这个程序并按下空格键时,程序阻塞了,我得到了“程序没有反应”的结果
最后一次。我想让我的角色在我保持空间的时候做点什么,当我放手的时候,我想让它回到原来的样子。
例如:默认情况下,我的角色正在行走。当我保持空间时,我希望它爬行的时间和我保持空间的时间一样长。最后,一旦我放开空间,我希望它能回到正常的行走状态
这是可能的吗?如果在接收到向下键
事件时按下空格键,则设置状态(spacePressed
)。如果释放空格并接收到KEYUP
,则重置状态并静止字符位置。根据主应用程序循环中按下的空格移动字符,例如:
spacePressed=False
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_空间:
spacePressed=True
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_空间:
spacePressed=False
#重置字符
# [...]
如果按空格键:
#移动字符
# [...]
另一个选项是,如果接收到KEYUP
事件,则用于在主应用程序循环中获取按下的键并重置字符的位置:
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_空间:
#重置字符
# [...]
keys=pygame.key.get_pressed()
如果键[pygame.K_SPACE]:
#移动字符
# [...]
如果在接收到向下键
事件时按下空格,则设置状态(spacePressed
)。如果释放空格并接收到KEYUP
,则重置状态并静止字符位置。根据主应用程序循环中按下的空格移动字符,例如:
spacePressed=False
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_空间:
spacePressed=True
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_空间:
spacePressed=False
#重置字符
# [...]
如果按空格键:
#移动字符
# [...]
另一个选项是,如果接收到KEYUP
事件,则用于在主应用程序循环中获取按下的键并重置字符的位置:
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_空间:
#重置字符
# [...]
keys=pygame.key.get_pressed()
如果键[pygame.K_SPACE]:
#移动字符
# [...]
也许您只需在while循环中添加一个时间。sleep(0.1)
不要在while
中使用while。如果在按下键事件中报告了空间,则设置标志,并在释放空间时将其重置。然后在主循环中检查该标志。难道你不能只监听KEYUP
事件吗?也许你只是在while循环中添加了一个时间。sleep(0.1)
在while循环中不要使用while
。如果在按下键事件中报告了空间,则设置标志,并在释放空间时将其重置。然后在主循环中检查该标志。您不能只监听KEYUP
事件吗?