Pythonでテキストベースのゲームを作ろう!(簡単)


今回はPythonで簡単なテキストベースのゲームを作っていきましょう。

ちなみに今回はinput関数についてと関数の活用のしかたについて学べると思います。


こんなのを作ります。


それでは早速作っていきましょう!


今回はライブラリのインポートはありません。

def main():
    global number
    global text
    number = 0
    text = "enterでスタート!"
    print("あなたは闇の中を歩いています...")

メイン関数です。この関数を中心としてプログラムを作ります。

関数を作るときはdef 関数名():で記述します。

global ○○というのは、グローバル変数を宣言するときに使います。

グローバル変数というのは、簡単に言うと、自身の関数外でも使える変数のことです。

例えば、関数の外でa = 0と宣言して、関数内でprint(a)をします。このとき、aはローカル変数というもので関数内では使えないため、エラーが起こってしまいます。

numberは話の流れを管理するのに使います。詳しくは後ほど説明しますが、こうするとセーブ機能を作るときなど、何かと便利です。

textも後から出ます。print関数はただそのテキストを表示するだけです。

    while True:
        choice = input(text)
        choice_if(choice)

main()に追加します。

ここで本題のinput関数が出てきました。

まず、input関数が何なのかというと、ユーザーからのキーボード入力を受け取るために使用される関数です。

この関数を呼び出すと、プログラムは一時停止し、ユーザーがキーボード入力するのを待ちます。ユーザーが入力したテキストは文字列として返されます。引数はprint関数みたいに表示されます。

つまり、choiceにはキーボード入力の情報が格納されます。

そしてtextというのは、input関数が実行されるときに表示されるテキストということです。

while True:は、この処理をずっと繰り返すということです。

choice_if(choice)は後で出てきますが、choice_if関数を引数にchoiceを送って実行するということです。

では、choice_if関数についてみていきたいですが、その前に一つ。

ゲームオーバー時の処理はどこでも同じなので、これも関数にしときましょう。

def game_over():
    print("ゲームオーバー!")
    print()
    main()

ただゲームオーバー!と空白の行を表示してmain関数を実行➡初めに戻すだけです。


def choice_if(t):
    global number
    global text

    if number == 0:
        text = "どっちに進む?(左/右):"
    if number == 1:
        if t == "左":
            print("不気味な音が聞こえてきます。")
            print("...")
            print("何かが近づいてきました。")
            print("鬼が現れた!")
            text="どうする?(戦う/逃げる):"
        else:
            print("落とし穴に落ちてしまった!")
            game_over()
    if number == 2:
        if t == "戦う":
            print("倒されてしまった!")
            game_over()
        elif t == "逃げる":
            print("逃げきれなかった!")
            game_over()
        else:
            print("倒されてしまった!")
            game_over()

    number += 1

これがchoice_if関数です。

tというのは、引数に入れてたtextのことです。

numbertextは主にここで使われます。

numberは先ほど少し言った通り、話の流れを管理します。この関数が実行されるたびに+1されます。

textinput関数の引数です。話の分岐点の選択肢を表示するテキストです。

ということで、if文の羅列を説明します。

numberが0なら、textをどっちに進む?(左/右):にし、処理を終える。

numberが1で、tが”左”なら話を進め、それ以外ならgame_overを実行。

numberが2なら、tが何でもgame_over。

つまり、正しい選択をした場合のみ話が進み、それ以外は話がリセットされるようになっています。

話の内容や選択肢を変えたり、続きを追加するのも簡単なので好きなように変えてください。


最後にpythonが実行されたときにmain関数を実行するようにします。

if __name__ == "__main__":
    main()

こう記述することで誤作動を減らすことができます。


これで完成です!

では実行しましょう。





ちゃんと動作しましたか?
関数をうまく活用すると非常に開発がしやすくなります
ですが、関数を作りすぎるとかえってごちゃごちゃになるので、何度も出てくる部分だけを関数にすることを心がけましょう。
また、今回作ったものはクイズアプリの開発などにも使えると思いますので、ぜひ活用してみてください!

それでは、全体のコードを載せて終わります。

def choice_if(t):
    global number
    global text

    if number == 0:
        text = "どっちに進む?(左/右):"
    if number == 1:
        if t == "左":
            print("不気味な音が聞こえてきます。")
            print("...")
            print("何かが近づいてきました。")
            print("鬼が現れた!")
            text="どうする?(戦う/逃げる):"
        else:
            print("落とし穴に落ちてしまった!")
            game_over()
    if number == 2:
        if t == "戦う":
            print("倒されてしまった!")
            game_over()
        elif t == "逃げる":
            print("逃げきれなかった!")
            game_over()
        else:
            print("倒されてしまった!")
            game_over()

    number += 1

def game_over():
    print("ゲームオーバー!")
    print()
    main()

def main():
    global number
    global text
    number = 0
    text = "enterでスタート!"
    print("あなたは闇の中を歩いています...")
   
    while True:
        choice = input(text)
        choice_if(choice)

if __name__ == "__main__":
    main()


以上、Pythonでテキストベースのゲームを作ろう!(簡単)でした。

このブログの人気の投稿

pythonで疑似ガチャGUIアプリを作ろう!(簡単)