【发布时间】:2020-03-28 15:54:51
【问题描述】:
我目前正在编写一个需要计时器的游戏。我编写了一些似乎可以工作的代码,因为它以秒为单位向上计数,但是当我移动鼠标时,计时器重置为零并再次开始计数。显然,这不是我想要发生的事情,我试图弄清楚为什么会发生这种情况,而不是连续计数,但我无法解决它。
我的代码是:
passed_time = 0
timer_started = False
(^在while循环之外)
(/在while循环内)
for event in ev:
if event.type == pygame.QUIT:
is_alive = False
if start_clicked:
timer_started = True
if timer_started:
start_time = pygame.time.get_ticks()
if won:
timer_started = False
if timer_started:
passed_time = pygame.time.get_ticks() - start_time
text = font.render(str(passed_time / 1000), True, font_color)
screen.blit(text, (20, 450))
以及在单击相应颜色时将 [start_clicked] 或 [won] 设置为 True 的鼠标事件。
根据我对 PyGame 中计时器的基本知识,一旦 start_clicked 设置为 true,它应该会继续计数,但是每次移动鼠标时它都会重置,这完全违背了计时器的意义基于鼠标移动的回避游戏。我可以做些什么来解决这个问题并让它持续运行,直到 won 变量为真?
如果出于某种原因我没有提供足够的信息来解决问题,the full code is here:
【问题讨论】:
-
start_clicked在什么情况下成真?每当设置此计时器时,计时器就会重新启动,这是它应该如何工作的? -
@Kingsley start_clicked 在单击特定颜色 (0,0,255) 或蓝色时为真,一旦单击它就保持真,直到单击获胜颜色,但我不知道为什么会认为每次鼠标移动时都会设置变量,因为似乎没有其他方法可以这样做
标签: python timer pygame reset mousemove