Pythonを使って、コンソール上で遊べるハングマンゲームを作ってみましょう。ハングマンとは、相手が思い浮かべた単語を当てるゲームです。間違えるたびに、ハングマンの絵が描かれ、全て描かれたら負けというルールです。

必要なライブラリ

まず最初に、必要なライブラリをインポートします。今回は、randomライブラリを使用します。

import random

ハングマンの描画

ハングマンの描画には、文字列を使用します。以下は、ハングマンの絵を表示するための文字列です。

HANGMAN = (
    """
    -----
    |   |
    |
    |
    |
    |
    |
    |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    |
    |
    |
    |
    |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    |  -+-
    |
    |
    |
    |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    | /-+-
    |
    |
    |
    |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    | /-+-\\
    |
    |
    |
    |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    | /-+-\\
    |   |
    |
    |
    |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    | /-+-\\
    |   |
    |   |
    |
    |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    | /-+-\\
    |   |
    |   |
    |  |
    |  |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    | /-+-\\
    |   |
    |   |
    |  | |
    |  | |
    |
    --------
    """,
    """
    -----
    |   |
    |   O
    | /-+-\\
    |   |
    |   |
    | _/|\\_
    |  / \\
    |
    --------
    """,
)

ランダムな単語を選択

プログラム内に、単語リストを用意し、その中からランダムに単語を選択します。以下は、単語リストの例です。

WORDS = ("python", "jumble", "easy", "difficult", "answer", "xylophone")

単語リストから、ランダムに単語を選択するには、以下のようにします。

word = random.choice(WORDS)

ゲームの実行

それでは、 ゲームの実行に移りましょう。以下は、ゲームを実行するための関数です。

def hangman():
    print("ハングマンへようこそ!")

    # ランダムな単語を選択
    word = random.choice(WORDS)

    # 空のリストを作成して、推測した文字を格納
    correct = []
    incorrect = []

    # ゲームの進行に合わせて、ハングマンの絵を描画
    stages = len(HANGMAN) - 1
    remaining = stages

    # ゲームが終了するまでループ
    while remaining > 0:
        # ユーザーに推測する文字を入力してもらう
        print("\n")
        msg = "単語を推測して、1文字を入力してください:"
        guess = input(msg)

        # 入力された文字が単語に含まれているかチェック
        if guess in word:
            correct.append(guess)

            # 単語をすべて当てた場合は、勝利メッセージを表示して終了
            if set(correct) == set(word):
                print("\nあなたの勝ちです!正解は「{}」でした!".format(word))
                return
        else:
            incorrect.append(guess)
            remaining -= 1

        # 現在の状況を表示
        print("推測した文字:", end=" ")
        for letter in word:
            if letter in correct:
                print(letter, end=" ")
            else:
                print("_", end=" ")

        # 推測に失敗した場合は、間違った回数に応じてハングマンの絵を描画
        print("\n間違った回数:{}".format(len(incorrect)))
        print(HANGMAN[len(HANGMAN) - remaining - 1])

    # ハングマンが完成してしまった場合は、負けメッセージを表示して終了
    print("\nあなたの負けです!正解は「{}」でした!".format(word))

ゲームの実行

最後に、プログラムを実行しましょう。以下は、hangman()関数を実行するためのコードです。

hangman()

以上で、Pythonでハングマンゲームを作る方法を紹介しました。楽しくプログラミングをして、自分なりのゲームを作ってみましょう!