0

こんにちは、私の pygame の if ステートメントは 1 回だけ実行され、実行後は機能しなくなります...私のメニュー コードの一部 (単純なキー押下) を次に示します。

    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_SPACE:
            import game
        if event.key == pygame.K_i:
            import Instructions
        if event.key == pygame.K_c:
            import controls

次に、メインのゲーム コードの一部を次に示します (ここでもキーを押します)。

if event.key == pygame.K_ESCAPE:
                import menu 

さて、メニューにいてスペースを押して開始した場合(完全に機能します)、ゲームモジュールに移動してゲームを開始し、ゲームモジュールを手動で開いた場合(スペースを押すのではなく)エスケープを押すと、 、それも完全に機能しますが、スペースキーを押してゲームを実行し、エスケープを押してメニューに戻ると何も起こらないため、ゲームモジュール自体を開いて直接開いた場合にのみ機能します。また、機能するキープレスは一度しか機能しないため、メニューからスペースを押してからエスケープしてからもう一度スペースを押すと、メニューにとどまるだけなので、これらの「if」ループを無限にする方法を教えてください

4

1 に答える 1

1

私はあなたがimport声明の目的を混乱させていると思います。Animportは、Python スクリプトを「ロード」するように設計されています。別の python ファイルですべてのコードを実行する方法として使用しないでください。

たとえば、game.py ファイルが次のようになっているとします。

a = 'Test'
print 'Running...'

次に、main.py ファイルは次のようになります。

import game
import game
import game

main.py を実行すると、最初にimport発生します。これにより、gameモジュールがロードされます。これは、game.pyスクリプトが実行され、そこで定義されているすべての変数/関数/etc がモジュールで定義されていることを意味しgameます。

pygame の使い方を考えてみましょう。ラインを使用しましたimport pygame。ここでの目標は、pygame スクリプトを「実行」することではなく、pygameモジュールの内容にアクセスできるようにすることでした。

やりたいことは、game.py ファイルに関数を作成することです。

def run():
    print 'Running...'

印刷を複数回実行するには、run()main.py から関数を複数回呼び出します...

import game

game.run()
game.run()
game.run()

これにより、ファイル (別名モジュール) のrun()関数で定義したコードが複数回実行されます。game.pygame

于 2013-10-09T19:13:18.550 に答える