Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで作るハングマンゲーム:初心者向けコード解説

ハングマン(Hangman)は、制限回数内に隠された単語を一文字ずつ推測して当てていく、世界的に有名な古典的な言葉遊びゲームです。レターをひとつずつ推理しながら新しい単語を学べるため、語彙力アップにも最適なゲームとして親しまれてきました。

この記事では、Pythonを使ってこの定番ゲーム「ハングマン」を実装する方法を、初心者の方にもわかりやすく解説します。

ハングマンゲームのコード全体

# timeモジュールをインポート
import time

# ユーザーへのウェルカムメッセージ
name = input("あなたの名前は何ですか? ")

print("こんにちは、" + name + "さん!ハングマンを始めましょう!")

print ("")

# 1秒間待機
time.sleep(1)

print("推測を開始してください...")
time.sleep(0.5)

# 秘密の単語を設定
word = ("Secret")
word = word.lower()

# 空の値を持つ変数を作成
guesses = ''

# 挑戦できる回数を決める
turns = 12

# whileループを作成

# 残り回数が0より多いかチェック
while turns > 0:

    # ゼロから始まるカウンターを作成
    failed = 0

    # 秘密の単語の各文字について
    for char in word:

        # その文字がプレイヤーの推測履歴に含まれているか確認
        if char in guesses:

            # 含まれていれば文字を出力
            print(char, )

        else:

            # 見つからなければダッシュ(_)を出力
            print("_", )

            # failedカウンターを1増やす
            failed += 1

    # failedがゼロの場合

    if failed == 0:
        # 「You won」を出力
        print("You won")

        # スクリプトを終了
        break

    print

    # ユーザーに文字の入力を求める
    guess = input("文字を推測してください:")

    # プレイヤーの推測をguessesに追加
    guesses += guess

    # 推測した文字が秘密の単語に含まれない場合
    if guess not in word:

        # 残り回数を1減らす
        turns -= 1

        # 「Wrong」を出力
        print("Wrong")

        # 残りの挑戦回数を表示
        print("残り", turns, "回推測できます")

        # 残り回数がゼロになった場合
        if turns == 0:

            # 「You Loose」を出力
            print("You Loose")

コードのポイント解説

このスクリプトは以下のような流れで動作します。

  • 名前の入力input()関数でプレイヤーの名前を受け取り、挨拶メッセージを表示します。time.sleep()を使うことで、ゲーム開始前に少し間を作り、臨場感を演出しています。
  • 秘密の単語:ここでは例として「Secret」という単語を設定し、lower()メソッドですべて小文字に変換しています。実際のアプリでは、単語リストからランダムに選ぶようにすると面白くなります。
  • whileループ:残り挑戦回数turnsが0より大きい間、ゲームを繰り返します。各ループ内で、単語の各文字がすでに推測済みかどうかを判定し、推測済みならその文字を、未推測なら「_」を表示します。
  • 勝敗判定failedカウンターが0のまま(=すべての文字が当たった状態)になれば「You won」を表示して終了。外れるごとにturnsが1ずつ減り、0になった時点で「You Loose」を表示してゲームオーバーです。

実行結果の例

================== RESTART: C:\Python\Python361\hangman1.py ==================
What is your name? Raj
Hello, Raj Time to play hangman!

Start guessing...
_
_
_
_
_
_
guess a character:s
s
_
_
_
_
_
guess a character:h
Wrong
You have 11 more guesses
s
_
_
_
_
_
guess a character:e
s
e
_
_
e
_
guess a character:c
s
e
c
_
e
_
guess a character:r
s
e
c
r
e
_
guess a character:e
s
e
c
r
e
_
guess a character:t
s
e
c
r
e
t
You won
>>>

この実行例では、プレイヤーが「s」「h」「e」「c」「r」「t」と順番に入力し、「Wrong」と表示されたのは「h」を入力したときだけです。正しい文字を入力するたびに、対応する位置の「_」が実際の文字に置き換わり、最終的にすべての文字が揃った時点で「You won」と表示され、見事クリアとなっています。

発展的なカスタマイズアイデア

基本版が完成したら、次のような機能を追加すると、より本格的なゲームになります。

  • ランダムな単語選択randomモジュールを使い、単語リストから毎回異なる単語を選ぶようにする。
  • 同じ文字の重複入力防止:すでに推測した文字を再度入力した場合に警告を表示する。
  • 絵文字やASCIIアート:残り回数に応じてハングマンの図を段階的に描画する。
  • 難易度設定:単語の長さや挑戦回数を難易度別に変更できるようにする。

ぜひこのコードをベースに、自分だけのオリジナルハングマンゲームへと進化させてみてください。

  1. Pythonで作るコンウェイのライフゲーム:基本ルールと実装方法を徹底解説

    1970年頃、イギリスの数学者ジョン・ホートン・コンウェイによって考案された「ライフゲーム(Game of Life)」は、生物の集団が見せるカオス的でありながらも秩序のある増殖の様子を表現する、シンプルな一連のルールです。盤面は「生存」セルと「死亡」セルで構成される二次元グリッドとして表現されます。 ライフゲームの基本ルール 過密(Overpopulation):あるセルの周囲に3つより多い生存セルが存在する場合、そのセルは次の世代で死滅します(OFF)。 維持(Static):周囲に2つまたは3つの生存セルが存在する場合、そのセルは次の世代でも生存し続けます(ON)。 過疎(Under

  2. 【Python】Tkinterで作るカラーゲーム – 30秒で文字の色を当てるGUIゲーム開発

    GUIアプリケーションの開発において、Pythonの標準ライブラリ「Tkinter」は非常に人気が高く、初心者でも扱いやすいツールです。追加のインストール作業なしに使えるため、Tkinterを活用すればシンプルなGUIゲームでも手軽に開発できます。 この記事では、Tkinterを使った「カラーゲーム」の作り方を紹介します。このゲームでは、画面に表示される単語の文字色をプレイヤーが入力し、正解するたびにスコアが1点ずつ加算されます。制限時間は30秒で、使用される色は赤(Red)、青(Blue)、緑(Green)、ピンク(Pink)、黒(Black)、黄(Yellow)、オレンジ(Orange)、