我有这样的程序。它运作良好有一个问题! 按下' 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
答案 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