2

これは私が試したものです:

if len(wormCoords) > 2:
    time.sleep(4)
    del wormCoords[-1]

しかし、その後、ゲーム全体 (私は単純な「ヘビ」ゲームをやっています) が 4 秒間スリープしてから、ヘビの最後の部分を削除します。計画は、4 秒ごとにヘビの最後の部分を取り除くことであり、常にリンゴを食べなければなりません (そうすると、ヘビは 1 つ成長します)。

完全なコードはhttp://inventwithpython.com/pygame/chapter6.htmlにあり ますが、いくつかの変更を行っています。

4

3 に答える 3

4

ここで行うべき正しいことは、セットアップ コード (行の後HEAD = 0)でこれを使用してタイマー イベントを設定することです。

SHRINKSNAKE = pygame.USEREVENT+0

これはrunGame後に関数に入りますdirection = RIGHT

pygame.time.set_timer(SHRINKSNAKE, 4*1000)

runGameこれは、行の前のイベント処理ループでelif event.type == KEYDOWN:elifs が整列する必要があります

elif event.type == SHRINKSNAKE:
  if len(wormCoords) > 2:
    del wormCoords[-1]

詳細については、次のドキュメントを確認してください。pygame.time.set_timer

于 2012-05-29T20:22:32.133 に答える
2

pygame.time.set_timer関数を確認してください。これにより、通常のイベント処理メカニズムで処理できる数ミリ秒ごとにイベントをトリガーすることができます (マウスの移動、キーボード、描画などを処理するのと同じように)。イベント処理の詳細については、pygame.eventのドキュメントを参照してください。

于 2012-05-29T20:18:10.970 に答える
-1

"sleep" を呼び出すときにアプリケーションの残りの部分を一時停止させたくない場合は、スレッドを使用する必要があります ( http://docs.python.org/library/threading.htmlを参照)。「wormCoords」変数はスレッド間で共有する必要があるため、競合状態を避けるために変数を更新するときは適切な注意を払う必要があります。

于 2012-05-29T20:13:49.383 に答える