見出し画像

Lesson3 ゲームの流れを作る

割引あり

今回はゲームに流れを作ります。

オープニングやエンディング、ゲームオーバーのときにそれぞれの画面をゲーム画面とは別に表示させたいので「インデックス」を作っていきます。

同時にゲームにもステージ制を導入したいので、ステージ1からステージ3までを作りたいと思います。

今回はその流れを仕込んでいきます。前回同様 main.py に下記のコード(プログラム)を追記してください。

追記する場所のヒントとして、前回までに追記されたものも一部書いてあります。ご注意ください。

#### main.py ####

############################################################################################
#### 初期設定 ####
hp = 100
mp = 100
idx = 0
current_stage = 1

############################################################################################
#### インデックス変更関数 ####
def change_idx():
    global idx
    global hp
    global mp
    idx += 1
    if idx > 2:
        idx = 0
        hp = 100
        mp = 100


############################################################################################
#### ステージ変更関数 ####
def change_stage():
    global current_stage
    current_stage += 1
    if current_stage > 3:
        current_stage = 1


############################################################################################
#### メインループ ####
while True:
    for event in pygame.event.get():                                                #追加済み
        if event.type == pygame.QUIT:                                               #追加済み
            pygame.quit()                                                           #追加済み
            sys.exit()                                                              #追加済み

        if event.type == pygame.KEYDOWN:                                            #追加済み
            if event.key == pygame.K_F1:                                            #追加済み
                screen = pygame.display.set_mode((width,height),pygame.FULLSCREEN)  #追加済み
            if event.key == pygame.K_F2 or event.key ==pygame.K_ESCAPE:             #追加済み
                screen = pygame.display.set_mode((width,height))                    #追加済み
            if event.key == pygame.K_RETURN:                                        #追加済み
                change_idx()
                print("インデックス:",idx)                            

        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
            change_stage()
            print("ステージ:",current_stage)

追記できましたか?

では上書き保存をして、ターミナルで下記を実行してください。

>python main.py

実行結果1: 相変わらず謎メッセージがでます

いつものメッセージが表示されたあと、またいつものように黒いゲーム画面が表示されます。

実行結果2: 相変わらず画面は真っ黒です


黒いゲーム画面内で、マウスを使って左クリックしてみてください。するとターミナル画面で下記のように表示されます。

実行結果3: マウスクリックでステージが変わります

クリックするたびにステージ番号が変わっていくみたいです。

同様に、キーボードのEnterキーを押すと

実行結果4: Enterキーでインデックスが進みます

インデックス番号が変わっていきます。
ちなみに、現在想定しているのは
 ・インデックス 0 :オープニング画面
 ・インデックス 1 :ゲーム画面
 ・インデックス 2 :エンディング画面
 ・インデックス 10 :ゲームオーバー画面
こんな感じで考えています。インデックスを増やしてゲームに横幅を与えることも可能です。
例えば、ストーリーを作ってインデックス4などにアニメーションを差し込んだりもできます。今回はそこまでやりません。

ステージ数は現在は3つまでを想定していて、こちらもあとで追加可能です。


ではプログラムの説明をしていきます。

ここから先は

5,109字

この記事が気に入ったらサポートをしてみませんか?