如何在Python中重复执行事件?

如何在Python中重复执行事件?,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,我是pygame编程新手。我需要该操作使用“self.vel+=1”每10秒增加角色的速度(在屏幕上显示为运动图像)。可能pygame.time.set_timer)可以,但我不知道如何使用它。因为我使用带有运动图像的窗口,所以time.sleep不是个好主意,因为这样窗口就会冻结。 最佳选项是什么以及如何使用它?使用Python模块,您可以在代码运行时计时10秒,并在10秒后提高速度。下面是一个使用计时器的简单示例。屏幕上填充的颜色每0.4秒改变一次 import pygame import

我是pygame编程新手。我需要该操作使用“self.vel+=1”每10秒增加角色的速度(在屏幕上显示为运动图像)。可能pygame.time.set_timer)可以,但我不知道如何使用它。因为我使用带有运动图像的窗口,所以time.sleep不是个好主意,因为这样窗口就会冻结。
最佳选项是什么以及如何使用它?

使用Python模块,您可以在代码运行时计时10秒,并在10秒后提高速度。

下面是一个使用计时器的简单示例。屏幕上填充的颜色每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\u timer(自定义\u timer\u事件,400)
。这会导致每400毫秒生成一个事件。因此,出于您的目的,您需要将其更改为
10000
。注意:您可以在数字常量中包含下划线,以使其更加明显,因此可以使用
10\u 000

一旦生成事件,就需要对其进行处理,因此这在
elif event.type==CUSTOM\u TIMER\u event:
语句中。这就是你想要增加精灵速度的地方

最后,如果要取消计时器,例如在游戏结束时,请提供零作为计时器持续时间:
pygame.time.set\u timer(自定义\u timer\u事件,0)

如果您需要任何澄清,请告诉我


你好。你能把你目前掌握的密码发出去吗?