首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用pygame.KEYDOWN在按住按键的情况下通过循环每次执行某项操作?

如何使用pygame.KEYDOWN在按住按键的情况下通过循环每次执行某项操作?
EN

Stack Overflow用户
提问于 2014-08-26 05:35:00
回答 2查看 86.1K关注 0票数 5

我做了两个函数,用来检查事件

代码语言:javascript
复制
def get_pygame_events():
  pygame_events = pygame.event.get()
  return pygame_events

代码语言:javascript
复制
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

我希望如果我能做一些类似的事情:

代码语言:javascript
复制
while True:
  Variable1 = get_pygame_events()
  Variable2 = get_keys_pressed()
  if Variable2 == ["w"]:
    print("w")

(那个while循环只是我所做工作的总结)

如果我按住W,"w“就会一遍又一遍地打印出来。相反,当我尝试时,它打印了W一次,除非我再按一次,否则就会发生这种情况。

我如何通过按住W(或any)键来实现这一点,它识别正在发生的事件,并(在本例中)在每次执行while循环时打印"w“?

EN

回答 2

Stack Overflow用户

发布于 2014-08-26 16:16:59

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

相反,您可以使用pygame.key.get_pressed()来检查当前是否按下了某个键:

代码语言:javascript
复制
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")
票数 17
EN

Stack Overflow用户

发布于 2015-01-22 20:38:55

代码语言:javascript
复制
event.key == chr('a') 

event.key返回密钥的ascii

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25494726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档