Как бы я установить таймер с Pygame и Livewires?
Итак, в игре, которую я создаю, когда игрок берет спрайт повышения скорости, я хочу, чтобы скорость игроков периодически повышалась в течение примерно пяти секунд, может кто-нибудь помочь мне понять, как это сделать? Метод "Handle Caught" будет содержать код для повышения скорости, фактическая скорость игрока также задается как глобальная переменная "speed", равная 2. Заранее спасибо
class Addspeed(games.Sprite):
image = games.load_image('addspeed.png')
speed = 2
def __init__(self,x,y = 10):
super(Addspeed, self).__init__(image = Addspeed.image,
x = x, y = y,
dy = Addspeed.speed)
def update(self):
if self.bottom>games.screen.height:
self.destroy()
def handle_caught(self):
global speed
1 ответ
Если ваша игра достаточно большая, я бы предложил менеджер таймера. Есть один большой таймер, основанный на pygame.Clock. Создайте методы, чтобы зарегистрировать время и методы, которые будут вызваны, когда время пройдет. Так что-то вроде:
timerMananger.register(self.myMethod,5000)
# registers an event to be called after 5 seconds
Менеджер должен охватывать часы, а также иметь приоритетную очередь задач для выполнения. Короткий набросок того, как это будет выглядеть:
def register(myMethod,t):
pqueue.add(myMethod,time_now+t)
def tick():
clock.tick()
if(time_now > pqueue[0]):
pqueue.pop()[0]()
Таким образом, вы проверяете только самые последние события. Вы можете изменить цикл if на if, если будет много событий, чтобы все они обрабатывались одновременно.