Pygame 精灵计时器
Pygame sprites timer
我需要制作一个精灵列表,每个精灵都应该有某种计时器,这样它就可以自己执行一个动作(例如每 10 秒射击一次)。但是它们会在不同的时间创建和添加新的,所以它们每个都应该有自己的计时器。
我知道如何制作精灵列表,但我不知道如何为每个精灵附加一个计时器或类似的东西。
有人可以帮助我吗?
您可以将计时器添加为精灵的属性:
class Sprite:
def __init__(self, ...):
self.timer = pygame.Clock()
# ...
# ...
或者(确保没有成员已经呼叫timer
):
for sprite in sprites:
sprite.timer = pygame.Clock()
或者您可以将列表更改为包含精灵和计时器的元组列表:
sprites = [(sprite, pygame.Clock()) for sprite in sprites]
这将生成一个格式如下的列表:
[(sprite, timer), (sprite, timer), ...]
然后您可以访问精灵和计时器:
sprite = sprites[0][0] # first sprite
timer = sprites[0][1] # first timer
或:
sprite, timer = sprites[0] # first pair
您还可以拥有 {sprite: timer}
的字典,然后使用 sprite_to_timer[sprite]
.
访问精灵的计时器
注意:将 pygame.Clock
替换为您要使用的定时器
我需要制作一个精灵列表,每个精灵都应该有某种计时器,这样它就可以自己执行一个动作(例如每 10 秒射击一次)。但是它们会在不同的时间创建和添加新的,所以它们每个都应该有自己的计时器。 我知道如何制作精灵列表,但我不知道如何为每个精灵附加一个计时器或类似的东西。 有人可以帮助我吗?
您可以将计时器添加为精灵的属性:
class Sprite:
def __init__(self, ...):
self.timer = pygame.Clock()
# ...
# ...
或者(确保没有成员已经呼叫timer
):
for sprite in sprites:
sprite.timer = pygame.Clock()
或者您可以将列表更改为包含精灵和计时器的元组列表:
sprites = [(sprite, pygame.Clock()) for sprite in sprites]
这将生成一个格式如下的列表:
[(sprite, timer), (sprite, timer), ...]
然后您可以访问精灵和计时器:
sprite = sprites[0][0] # first sprite
timer = sprites[0][1] # first timer
或:
sprite, timer = sprites[0] # first pair
您还可以拥有 {sprite: timer}
的字典,然后使用 sprite_to_timer[sprite]
.
注意:将 pygame.Clock
替换为您要使用的定时器