1

私はPythonでプログラミングするのが初めてです。私は見つけたチュートリアルブックに取り組んでおり、ゲームを起動して実行しましたが、「もう一度プレイしますか?」最後にオプション。「n」キーを押してゲームを終了することはできますが、ゲームを再起動する方法がわかりません。

問題を引き起こしていると思われるコードは次のとおりです。

#player reaches treasure
if player_rectangle.colliderect(treasure_rectangle):

#display text
    screen.blit(text,(screen_width/2-195,screen_height/2-25))
    if event.type==pygame.KEYDOWN:
        if event.key==pygame.K_n:
            exit()

    elif event.key==pygame.K_y:


pygame.display.update()

elif イベントの後に何かする必要があることはわかっており、考えられることはすべて試しました。プログラム全体を定義して呼び出しようとしましたが、実行がすべて停止しました。私はインターネットサイトを見回しましたが、答えが思いつかないようです.

yキーが押されたときにゲームを開始位置に再起動する方法を簡単に教えてくれる人がいますか? ループと関係があることは知っていますが、何に指を置くことができません。

どうもありがとう。

4

2 に答える 2

2

コードがどのように編成されているかは完全には明らかではないため、非常に一般的なものにします。通常、ゲームはすべてのアクションを処理する「メイン ループ」で実装されます。「疑似」-python:

def main_loop():
    while True:
        handle_next_action()
        draw_screen()

        if game_is_over():
            break

ループを開始する前に、通常、ゲームの状態を希望どおりに設定するためのセットアップを行います。

def main():
    setup()

    main_loop()

    shut_down()

これらの部分があれば、メイン ループ コードをsetup再度呼び出すことでゲームをリセットできます (複数回実行できるように特別に設計する必要がある場合があります)。

def main_loop():
    while True:
        handle_events()
        draw_screen()

        if game_is_over():
            if play_again():   # new code here!
                setup()
            else:
                break

コードを 2 つの部分に分割することをお勧めしsetupます。1 つはプログラムの開始時にのみ実行する必要があり (構成ファイルの読み取りとウィンドウ システムなどの設定)、もう 1 つは新しいゲームごとに繰り返されます (設定ゲームの状態)。

于 2012-12-10T13:50:46.680 に答える
0

ゲームを再開するには、通常、すべての変数を初期値にリセットする必要があります (例: ライフ数、スコア、初期位置など)。

最善の方法は、すべての初期化をプロシージャ内に置くことです。

def init():
    global score,lives     # use these global variables
    score=0
    lives=3

init()    # call init() to define and reset all values

while 1: # main loop
       ...
       elif event.key==pygame.K_y:
            init()            # restart the game
于 2012-12-10T13:50:25.633 に答える