Количество миллисекунд с pygame.init()
может быть получено с помощью pygame.time.get_ticks()
. См. pygame.time
module.
Кроме того, в Pygame существует событие таймера. Используйте pygame.time.set_timer()
, чтобы повторно создать USEREVENT
. Например:
time_delay = 500 # 0.5 seconds
timer_event = pygame.USEREVENT + 1
pygame.time.set_timer(timer_event , time_delay )
Обратите внимание, в Pygame могут быть определены события клиента. Каждому событию нужен уникальный идентификатор. Идентификаторы пользовательских событий должны начинаться с pygame.USEREVENT
. В этом случае pygame.USEREVENT+1
является идентификатором события таймера.
Получить событие в событии l oop:
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == timer_event:
# [...]
Событие таймера можно остановить, передав 0 к параметру времени.
См. пример:
import pygame
pygame.init()
window = pygame.display.set_mode((200, 200))
clock = pygame.time.Clock()
font = pygame.font.SysFont(None, 100)
counter = 0
text = font.render(str(counter), True, (0, 128, 0))
time_delay = 1000
timer_event = pygame.USEREVENT+1
pygame.time.set_timer(timer_event, time_delay)
# main application loop
run = True
while run:
clock.tick(60)
# event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == timer_event:
# recreate text
counter += 1
text = font.render(str(counter), True, (0, 128, 0))
# clear the display
window.fill((255, 255, 255))
# draw the scene
text_rect = text.get_rect(center = window.get_rect().center)
window.blit(text, text_rect)
# update the display
pygame.display.flip()