0

私が作成しているゲームでは、プレイヤーがスピード ブースト スプライトを拾ったときに、プレイヤーのスピードを定期的に約 5 秒間ブーストしたいと考えています。「Handle Caught」メソッドには、スピード ブーストのコードが含まれます。プレーヤーの実際のスピードも、2 に等しいグローバル変数「speed」として設定されます。よろしくお願いします。

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
4

1 に答える 1

0

ゲームが十分に大きい場合は、タイマー マネージャーをお勧めします。pygame.Clock に基づく 1 つの大きなタイマーを用意します。メソッドを作成して、時間と時間が経過したときに呼び出されるメソッドを登録します。次のようなものです:

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 ループに変更して、それらがすべて一度に処理されるようにすることができます。

于 2013-11-11T18:14:18.607 に答える