2016-09-28 16 views
0

私はこれが既にこのフォーラムでは技術的に "尋ねられている"ことを知っていますが、この質問は私が見つけられなかった別の概念に基づいています。Python:Sleep methods

time.sleepを使用している間は明らかにスリープしますが、Pygameを使用している間はプログラムがロックされます。 pygameをロックしない入力以外のコードでスリープまたはポーズを使用する方法はありますか?私はもう試した;

time.sleep 
pygame.wait and 
pygame.delay 

これらはすべて全く同じことです。私はコンピュータサイエンスのクラスのゲームに取り組んでいます。これは13枚の小さな写真がありますが、写真はわずかに異なりますが、0.12秒間隔で遊んでみると、それは見栄えがよくて、悲しいことに全体が待ち時間から凍ってしまいますステートメントはそれをスキップし、非常に悪く見えるようにします。

誰でもこの謎を理解することができます。

+0

これはおそらく役に立ちます:http://stackoverflow.com/questions/2660919/python-animation-timing – jdigital

+0

このスレッドの唯一の問題は、必要なアニメーションはすべてのフレームに必要で、0.12秒待つ必要があることですこの投稿はそれほど正確にはカバーしていませんか? – Verxi

+0

アニメーションを独自の 'Thread'に分割できますか?それはプログラムの残りの部分を遅らせるのを避けるでしょう。私はpyGameに精通していませんが、私は暗闇の中でただ撃っています。 – haliphax

答えて

0

hereという方法を試してみてください。彼は変数がそれよりも小さい、それがあれば、彼はif文に渡すかどうかをチェックするためにpygame.time.get_ticks()を使用しています

class Unit(): 
    def __init__(self): 
     self.last = pygame.time.get_ticks() 
     self.cooldown = 300  

    def fire(self): 
     # fire gun, only if cooldown has been 0.3 seconds since last 
     now = pygame.time.get_ticks() 
     if now - self.last >= self.cooldown: 
      self.last = now 
      spawn_bullet() 

予告:

私が何を意味するかの例がこれです弾丸を発射する。

この概念を表示する簡単な方法は、それはあなたが通常の機能を使用するときに凍結し続けるので、それは現実的な選択肢かもしれないように私はそれがどのような方法であなたを役に立てば幸い以下

curtime = pygame.time.get_ticks() + 10 # the 10 is what we add to make it sleep 

while True: # Create a loop that checks its value each step 
    if curtime < pygame.time.get_ticks(): # check if curtime is less than get_ticks() 
     print("Sleep is over now!") 
     break # exit the loop 

が、それはそうです。

ONE MORE THING

はpygame.time.get_ticksは()これはhereを行く上で完全なドキュメントのために、ミリ秒単位であなたの現在の時間を与えることに注意します。

関連する問題