忽略PyGame

时间:2017-03-29 04:20:04

标签: python pygame

我有一个程序,用户会看到一个单词,并且必须根据它做出两个关键决定。

每次出现这个词时,我都会在下方显示一些代码来监控他们的按键操作。如果他们给出了可接受的响应(1或0),它会返回该响应,但也会将程序延迟1000毫秒,然后再执行下一个单词:

  pygame.event.clear()
  while True:
    for event in pygame.event.get(): #check for keypresses
      if event.key == pygame.K_1:
        wait(1000) #wait 1000 ms if they make a response before the next word is presented
        return 1
      elif event.key == pygame.K_0:
        wait(1000)
        return 0

我遇到的问题是,如果在给定的试用期间,用户在等待(1000)呼叫期间变得不耐烦并开始按下按钮,那么当上述情况时,这些人最终会被注册为下一对提出的单词代码被调用。

开头的pygame.event.clear()应该清除事件队列,这样如果用户已按下某些键,它将清除队列并仅检查新响应。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

不要睡觉。而是存储上一次按键事件的时间和键。

如果当前事件是相同的键,并且自第一次按下此键以来的时间低于1秒,则以某种方式闪烁或发出蜂鸣声以指示程序未挂起,但不接受此特定键。

如果密钥与上次注册的密钥不同,请存储时间和密钥,然后照常处理。

始终向用户提供即时反馈,即使反馈是"此操作也不受欢迎"。