如何使用pygame.KEYDOWN [英] How to use pygame.KEYDOWN

查看:133
本文介绍了如何使用pygame.KEYDOWN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我的问题很可能已经被问到了,但是我不知道要搜索什么,没有找到。所以,我的问题是,我做了2个功能,这将检查事件

So, my question was most likely already asked, but I didn't know what to search for, and didnt find much. So, my problem is, I made 2 functions, which would check for an event

def get_pygame_events():
  pygame_events = pygame.event.get()
  return pygame_events

def get_keys_pressed(self):
keys_pressed = get_pygame_events()  #pygame.event.get(pygame.KEYDOWN)
# print(keys_pressed)
keys_pressed_list = []
for event in keys_pressed:
  if event.type == pygame.KEYDOWN:
    if event.key == K_LEFT:
      keys_pressed_list.append("left")
    if event.key == K_RIGHT:
      keys_pressed_list.append("right")
    if event.key == K_UP:
      keys_pressed_list.append("up")
    if event.key == K_DOWN:
      keys_pressed_list.append("down")
    if event.key == K_a:
      keys_pressed_list.append("a")
    if  event.key == K_d:
      keys_pressed_list.append("b")
    if event.key == K_w:
      keys_pressed_list.append("w")
    if event.key == K_s:
      keys_pressed_list.append("s")
    if event.key == K_SPACE:
      keys_pressed_list.append("space")
    if event.key == K_q:
      keys_pressed_list.append("q")
    if event.key == K_e:
      keys_pressed_list.append("e")
  if event.type == pygame.MOUSEBUTTONDOWN:
    keys_pressed_list.append("click")
    return (keys_pressed_list, event.pos)
return keys_pressed_list

我预计如果我可以做类似于

I expected that if I could do something similar to

while True:
  Variable1 = get_pygame_events()
  Variable2 = get_keys_pressed()
  if Variable2 == ["w"]:
    print("w")

(PS:while循环只是我做的总结)
然后如果我按住W,那么W将被打印一遍又一遍,而是我尝试时打印W一次。除非我再次按下,否则就会发生。
如何通过按住W(或任何)键来识别发生的事件,并且(在这种情况下)每次通过while循环打印w?

(PS: that while loop was just a summary of what I did) then if I held down W, then W would be printed over and over and over again, instead, when I tried, it printed W once. and unless I pressed again, that is all that would happen. How can I make it so by holding down the W (or any) key, it identifies the event happening, and (in this case) prints w every time it goes through the while loop?

推荐答案

使用 pygame.KEYDOWN pygame.KEYUP 来检测一个键是否被物理按下或释放。您可以使用 pygame.key.set_repeat 在一个键持有时生成多个 pygame.KEYDOWN 事件来激活键盘重复但是这很少是个好主意。

Use pygame.KEYDOWN and pygame.KEYUP to detect if a key is physically pressed down or released. You can activate keyboard repeat by using pygame.key.set_repeat to generate multiple pygame.KEYDOWN events when a key is held down, but that's rarely a good idea.

相反,您可以使用 pygame.key.get_pressed() 来检查一个密钥是否正在按住:

Instead, you can use pygame.key.get_pressed() to check if a key is currently held down:

while True:
    ...
    pressed = pygame.key.get_pressed()
    if pressed[pygame.K_w]:
       print("w is pressed")
    if pressed[pygame.K_s]:
       print("s is pressed")

这篇关于如何使用pygame.KEYDOWN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆