Pygame:我怎样才能限制这个程序,以便在显示屏时显示键盘事件?

时间:2018-05-03 12:51:46

标签: python pygame keyboard-events

我有这样的程序。它运作良好有一个问题! 按下' Down'按键它在屏幕上显示一个圆圈5秒钟,也可以通过“空格向下”按钮显示一个圆圈。和' Space-up'做其他事情(计算紧迫时间)。但我不想让它来计算'何时显示圆圈。换句话说,当显示圆圈时,我不希望它获得键盘事件(或者如果获取键盘事件则不做任何事情)。为此,我添加了' p'作为一个条件。它以某种方式工作!我的意思是在圆圈展示期间,即使你按下“空间”,节目也无法计算。键。但问题是圆圈节目结束时。它的计算方式就像您按下“空间”一样。圆圈显示时间后的键。我的意思是,如果你按下空间'在圆圈展示时间内按键,它会在圆圈展示结束后立即进行计算。 就像程序在圆圈展示期间获得关键事件一样,但等到条件(p == 0)变为真时。 请帮我解决这个问题。

p = 0   
gameloop = True
while gameloop:

for event in pygame.event.get():

    if (event.type == pygame.QUIT):
            gameloop = False

    if event.type == pygame.KEYDOWN:
        if (event.key == pygame.K_DOWN)  :

                p += 1
                start_time = time.time()
                end_time = start_time + 5
                while end_time > time.time():
                    # showing a circle on display 
                p -= 1 

    if (event.type == pygame.KEYDOWN):
        if (event.key == pygame.K_SPACE)  and (p == 0)  :

            # Do something

    if (event.type == pygame.KEYUP)  :
        if (event.key == pygame.K_SPACE) and (p == 0) :

            # Do somthing

1 个答案:

答案 0 :(得分:0)

我发现如果你在圆圈放映期间按下“空格”键,它就不会在那一刻运行,但是当圆圈展示结束后,它会立即运行。它喜欢你在圆圈放映后立刻按下“空间”。因此它需要与系统操作时间一样长(正如我所说的程序计算'空格'键按下时间:space_up_time - space_down_time),当你在圆形显示时间内按'空格'键时,每次返回约0.002秒的时间这是系统运行时间。因此,为了解决我的问题,我添加了另一个条件:h + 0.01<了time.time()。现在它完美无缺!但是让我知道是否有另一种方式,因为一个人可以非常快地按键或者快于0.002秒!!!

start_time = time.time()
end_time = start_time + ex
while end_time > time.time():
        # Drawing a circle
h = time.time()

      if (event.type == pygame.KEYDOWN):

        if (event.key == pygame.K_SPACE)  and ( h+0.01 < time.time())  :
               # Do calculations