Вот простой пример использования таймера. Экран заполнен цветом, который меняется каждые 0,4 секунды.
import pygame
import itertools
CUSTOM_TIMER_EVENT = pygame.USEREVENT + 1
my_colors = ["red", "orange", "yellow", "green", "blue", "purple"]
# create an iterator that will repeat these colours forever
color_cycler = itertools.cycle([pygame.color.Color(c) for c in my_colors])
pygame.init()
pygame.font.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode([320,240])
pygame.display.set_caption("Timer for Dino Gržinić")
done = False
background_color = next(color_cycler)
pygame.time.set_timer(CUSTOM_TIMER_EVENT, 400)
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == CUSTOM_TIMER_EVENT:
background_color = next(color_cycler)
#Graphics
screen.fill(background_color)
#Frame Change
pygame.display.update()
clock.tick(30)
pygame.quit()
Код для создания таймера: pygame.time.set_timer(CUSTOM_TIMER_EVENT, 400)
. Это приводит к тому, что событие генерируется каждые 400 миллисекунд. Так что для вашей цели вы захотите изменить это на 10000
. Заметьте, что вы можете включить подчеркивания в константы нумерации c, чтобы сделать его более очевидным, чтобы вы могли использовать 10_000
.
После того, как событие сгенерировано, его нужно обработать, так что это в elif event.type == CUSTOM_TIMER_EVENT:
заявление. Вот где вы захотите увеличить скорость вашего спрайта.
Наконец, если вы хотите отменить таймер, например, при окончании игры, вы указываете ноль в качестве длительности таймера: pygame.time.set_timer(CUSTOM_TIMER_EVENT, 0)
.
Дайте мне знать, если вам нужны какие-либо разъяснения.