如何解决如何使用pygame检测按键?
我正在 pygame 中制作射击游戏,但是这段代码:
checkfocus = pygame.key.get_focused()
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
#THIS PART DOES NOT WORK
if event.type == pygame.K_w:
print(checkfocus)
print("up")
pygame.key.set_repeat(0,1)
yvalue -= 20
if yvalue < 0:
yvalue = 0
print(yvalue)
pygame.time.wait(100)
screen.fill((52,61,82))
screen.blit(harryshoot,(20,yvalue))
pygame.display.flip()
不知何故不起作用,尽管其他 if event.type
代码工作正常。这里有什么问题?为什么只有这段代码没有键盘输入?我试过更改密钥,但这没有帮助。(print("up")
也没有显示,所以不是代码本身不起作用)。
解决方法
pygame.K_w
不是事件类型,而是键。您需要验证事件类型为 pygame.KEYDOWN
且键为 pygame.K_w
:
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key== pygame.K_w:
# [...]
键盘事件 KEYDOWN
和 KEYUP
(参见 pygame.event 模块)创建一个带有附加属性的 pygame.event.Event
对象。按下的键可以从 key
属性(例如 K_RETURN
、K_a
)获得,mod
属性包含一个带有附加修饰符的位集(例如 {{1} })。 KMOD_LSHIFT
属性提供键盘输入的 Unicode 表示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。