いくつかのボックスが画面上を移動する単純なパイゲームプログラムを作成しようとしています。私はthis exampleに従っています。pygameの一貫性のない更新
チュートリアルでは、以下の構造を有する:
class Box(pygame.sprite.Sprite):
...
def update(self, currtime):
if self.next_update_time < current_time:
print time.time() # I added this to debug
# Do some stuff
self.next_update_time = current_time + 10
box = Box()
while True:
pygame.time.delay(10)
time = pygame.time.get_ticks()
box.update(time)
マイボックスは非常にスムーズに移動ではなく。彼らはスピードアップし、公正なビットを遅くする。更新が行われるポイントをプロットすると、thisが得られます。
私はこのチュートリアルで提案されているデザインの問題のようですか?ハードウェアに問題はありますか?
EDIT:ラドミルDopieralskiの答えに基づいて 、より良いアプローチがある:
class Box(pygame.sprite.Sprite):
...
def update(self):
# Do some stuff
box = Box()
clock = pygame.time.Clock()
while True:
clock.tick(100)
box.update()
私はチュートリアルに 'pygame.time.delay(10)'があることに気づいたので、これは愚かな質問です。 – ajwood
問題は実際にはまだありますが、遅延を追加する前と同じくらい悪くはありません。そして、遅延/更新を5に落とすと、本当に悪いです。だから私はこれが有効な質問だと思う。 – ajwood
グラフの+1 – Darthfett