Pygame倒数计时器

我开始使用pygame,我想做简单的游戏。 我需要的一个元素是倒数计时器。 如何在PyGame中进行倒计时(例如10秒)?

在这个页面上,你会发现你正在寻找什么http://www.pygame.org/docs/ref/time.html#pygame.time.get_ticks
在开始倒计时之前,您可以下载一次滴答(可以是游戏中的触发器 – 关键事件,无论如何)。 例如:

start_ticks=pygame.time.get_ticks() #starter tick while mainloop: # mainloop seconds=(pygame.time.get_ticks()-start_ticks)/1000 #calculate how many seconds if seconds>10: # if more than 10 seconds close the game break print (seconds) #print how many seconds 

另一个简单的方法是简单地使用pygame的事件系统。

这是一个简单的例子:

 import pygame pygame.init() screen = pygame.display.set_mode((128, 128)) clock = pygame.time.Clock() counter, text = 10, '10'.rjust(3) pygame.time.set_timer(pygame.USEREVENT, 1000) font = pygame.font.SysFont('Consolas', 30) while True: for e in pygame.event.get(): if e.type == pygame.USEREVENT: counter -= 1 text = str(counter).rjust(3) if counter > 0 else 'boom!' if e.type == pygame.QUIT: break else: screen.fill((255, 255, 255)) screen.blit(font.render(text, True, (0, 0, 0)), (32, 48)) pygame.display.flip() clock.tick(60) continue break 

在这里输入图像描述

有几种方法可以做到这一点 – 这是一个。 就我所知,Python没有中断机制。

 import time, datetime timer_stop = diatomite.datetime.utcnow() +datetime.timedelta(seconds=10) while True: if datetime.datetime.utcnow() > timer_stop: print "timer complete" break 

pygame.time.Clock.tick返回自上次clock.tick调用( delta time , dt )以来的时间(以毫秒为单位),因此您可以使用它来增加或减less计时器variables。

 import pygame as pg def main(): pg.init() screen = pg.display.set_mode((640, 480)) font = pg.font.Font(None, 40) gray = pg.Color('gray19') blue = pg.Color('dodgerblue') # The clock is used to limit the frame rate # and returns the time since last tick. clock = pg.time.Clock() timer = 10 # Decrease this to count down. dt = 0 # Delta time (time since last tick). done = False while not done: for event in pg.event.get(): if event.type == pg.QUIT: done = True timer -= dt if timer <= 0: timer = 10 # Reset it to 10 or do something else. screen.fill(gray) txt = font.render(str(round(timer, 2)), True, blue) screen.blit(txt, (70, 70)) pg.display.flip() dt = clock.tick(30) / 1000 # / 1000 to convert to seconds. if __name__ == '__main__': main() pg.quit() 

这其实很简单。 感谢Pygame创build一个简单的图书馆!

 import pygame x=0 while x < 10: x+=1 pygame.time.delay(1000) 

这就是它的全部! 玩pygame!