簡體   English   中英

如何設置Pygame和Livewires的計時器?

[英]How would I set a timer with Pygame and Livewires?

因此,在我正在創建的游戲中,當玩家拿起速度提升精靈時,我希望玩家周期性地提升速度約5秒鍾,有人可以幫助我了解如何做到這一點嗎? “抓手”方法將包含用於加速的代碼,玩家的實際速度也被設置為等於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

如果您的游戲足夠大,我建議您使用計時器管理器。 有一個基於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循環,以便一次處理所有事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM