我如何设置Pygame和Livewires的计时器?

时间:2013-11-11 16:59:55

标签: python 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 个答案:

答案 0 :(得分:0)

如果您的游戏足够大,我会建议一个计时器管理器。 有一个基于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更改为while循环,如果有很多事件,那么它们将立即全部处理。