【发布时间】:2015-03-07 07:31:09
【问题描述】:
我想在 Pygame 中计算用户鼠标事件的时间,如果用户在 15 秒内没有移动鼠标,那么我想在屏幕上显示一个文本。我为此尝试了time 模块,但它不起作用。
import pygame,time
pygame.init()
#codes
...
...
font = pygame.font.SysFont(None,25)
text = font.render("Move your mouse!", True, red)
FPS = 30
while True:
#codes
...
...
start = time.time()
cur = pygame.mouse.get_pos() #catching mouse event
end = time.time()
diff = end-start
if 15 < diff:
gameDisplay.blit(text,(10,500))
pygame.display.update()
clock.tick(FPS)
pygame.quit()
quit()
输出不是我想要的,如果用户不移动鼠标,我不知道如何计算。
如果我想在用户的鼠标在特殊区域时写一个文本,它的工作原理是;
if 100 < cur[0] < 200 and 100 < cur[1] < 200:
gameDisplay.blit(text,(10,500))
但是我该如何计算呢?我什至找不到如何告诉Python,用户的鼠标是否在同一个坐标上。那么我可以说,如果鼠标坐标发生变化,则启动计时器,如果大于15,则打印文本。
编辑:你可以假设它在没有 Pygame 模块的普通 Python 中,假设你有一个捕获鼠标事件的函数,那么如果鼠标坐标没有改变,如何告诉 Python,启动计时器,如果时间大于 15 秒,打印文本,然后刷新计时器。
【问题讨论】:
-
您当前的代码无条件地将
start = time.time()设置在循环的顶部,因此稍后计算的diff = end-start将始终是一个相对较小的数字。
标签: python python-3.x time pygame mouseevent