2015-01-05 7 views
0

Мне нужно составить список спрайтов, каждый из которых должен иметь какой-то таймер, чтобы он мог выполнять свое действие самостоятельно (например, снимать каждые 10 секунд, например). Но они будут созданы и добавлены новые в другое время, поэтому каждый из них должен иметь свой собственный таймер. Я знаю, как составить список спрайтов, но я не знаю, как подключить таймер к каждому из них или что-то в этом роде. Может кто-нибудь мне помочь?Pygame sprites timer

ответ

3

Вы можете добавить таймер как атрибут спрайтов:

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 на то, что когда-либо таймер, который вы хотите использовать

Смежные вопросы