今回は、Pythonを使って簡単なゲームを作る方法を紹介します。題材として取り上げるのは、古典的な単語ゲーム「ハングマン」です。このゲームを通じて、Pythonの基本的な文法や文字列操作、ランダム選択などの概念を楽しく学んでいきましょう。
- モジュールのインポートと使用(random)
- リスト、セット、文字列の操作
- 条件分岐(if-elif-else文)
- ループ(while文)
- 入力と出力の処理
- リスト内包表記と条件付き式
楽しんで作りながら学びましょう
Pythonの学習をより深めたい方へ:「【2024年最新版】Python講座で学べるプログラミングスクール10選を徹底比較」では、Python講座を提供する優秀スクールの比較と選び方をご紹介しています。自分に合ったスクールを見つけたい方は、ぜひチェックしてください。
①Visual Studio Code(VS Code)をインストールする
- VS Code公式サイトからダウンロードしてインストールします。
②Python拡張機能をインストールする
- VS Codeを開き、左のサイドバーにある拡張機能(Extensions)アイコンをクリックします。
- 検索バーに「Python」と入力し、Pythonに関連した拡張機能をインストールします。
③新しいファイルを作成する
- VS Codeを開き、「ファイル」メニューから「新しいファイル」を選択します。
- 上記のコードをエディタに記述します。(コピー&ペーストでも構いません)
④ファイルを保存する
「ファイル」メニューから「名前を付けて保存」を選択し、
「(任意のファイル名).py
」という名前で保存します。(※ファイル名の後ろには「.py」を忘れないようにしてください)
⑤Pythonファイルを実行する
VS Codeのショートカットキーで実行します。
- F5
- Windows: Ctrl+Shift+D
- Mac: ⇧⌘D
ターミナルに結果が表示されます。
【Pythonゲーム】ハングマンとは?
ハングマンゲームというのは、隠された単語を文字を一つずつ予想しながら当てていくゲームです。間違えるたびに「ハングマン」(首つり人形)の絵が少しずつ完成していき、絵が完成する前に単語を当てられるかどうかを競います。参考:Wikipedia
今回作成するPython版では、絵の代わりに残りの挑戦回数をカウントダウンする形で実装します。
実際のゲームの様子です。ゲームが表示されるターミナルの一部を拡大しています。
【Pythonゲーム】ハングマンの遊び方
ゲームの遊び方流れ
ハングマンゲームは、隠された単語を当てる簡単で楽しいゲームです。以下の手順で遊びましょう:
- ゲーム開始: 隠された単語が「」で表示されます。 例:P _ _ _ N (正解はPYTHON)
- 文字を予想: 1回につき1文字を入力します。
- 結果確認:
- 正解の場合:該当する「_」が文字に置き換わります。
- 不正解の場合:残りの挑戦回数が1回減ります。
4. 繰り返し: 2と3を繰り返します。
5. ゲーム終了:
- 勝利:単語を完全に当てる
- 敗北:挑戦回数が0になる
- 戦略的に母音から始めると有利です!
- 頻出する文字(EやAなど)を早めに予想しましょう。
- 単語の長さや既に分かっている文字から、単語を推測してみましょう。
頭を柔らかくして挑戦してみましょう!
【Pythonゲーム】ハングマン プログラムの全体像
まずは、完成したプログラムの全体を見てみましょう。その後、各部分の詳細な解説を行います。
import random
words = ["python", "programming", "computer", "game", "hangman"]
word = random.choice(words)
guessed_letters = set()
attempts = 6
print("ハングマンゲームを始めます!")
while attempts > 0:
hidden_word = ''.join([letter if letter in guessed_letters else '_' for letter in word])
print(f"\n単語: {hidden_word}")
print(f"残りの挑戦回数: {attempts}")
if hidden_word == word:
print("おめでとう!単語を当てました!")
break
guess = input("1文字を予想してください: ").lower()
if guess in guessed_letters:
print("その文字は既に使用済みです。")
elif guess in word:
print("正解!その文字は単語に含まれています。")
guessed_letters.add(guess)
else:
print("不正解。その文字は単語に含まれていません。")
attempts -= 1
guessed_letters.add(guess)
if attempts == 0:
print(f"\nゲームオーバー。正解は {word} でした。")
このコードをPythonの実行環境にコピー&ペーストするだけで、すぐにゲームを始めることができます。それでは、プログラムの各部分を詳しく見ていきましょう。
【Pythonゲーム】ハングマン プログラムの詳細解説
1. 必要なモジュールのインポートと初期設定
import random
words = ["python", "programming", "computer", "game", "hangman"]
word = random.choice(words)
guessed_letters = set()
attempts = 6
print("ハングマンゲームを始めます!")
- import randam: Pythonの標準ライブラリからrandomモジュールをインポートします。このモジュールは、ランダムな選択を行うために使用します。
- words: ゲームで使用する単語のリストです。好きな単語を追加して、ゲームのバリエーションを増やすことができます。
- word: random.choice(words)を使用して、wordsリストからランダムに1つの単語を選びます。これが、プレイヤーが当てる単語になります。
- guessed_letters: プレイヤーが今までに予想した文字を格納するための集合(set)です。重複を自動的に除去できるため、setを使用しています。
- attempts: プレイヤーの残りの挑戦回数を示す変数です。6回から始まり、不正解のたびに1ずつ減少します。
2. ゲームのメインループ
while attempts > 0:
hidden_word = ''.join([letter if letter in guessed_letters else '_' for letter in word])
print(f"\n単語: {hidden_word}")
print(f"残りの挑戦回数: {attempts}")
if hidden_word == word:
print("おめでとう!単語を当てました!")
break
guess = input("1文字を予想してください: ").lower()
if guess in guessed_letters:
print("その文字は既に使用済みです。")
elif guess in word:
print("正解!その文字は単語に含まれています。")
guessed_letters.add(guess)
else:
print("不正解。その文字は単語に含まれていません。")
attempts -= 1
guessed_letters.add(guess)
このwhile文がゲームの中心部分です。attemptsが0より大きい間、つまりプレイヤーにまだ挑戦回数が残っている間、このループが続きます。
コードの主要部分の説明
ゲームの中心となるループ部分を簡単に説明します:
ゲームループ:
while attempts > 0:
- 挑戦回数が残っている限り、ゲームを続けます。
隠された単語の表示:
hidden_word = ''.join([letter if letter in guessed_letters else '_' for letter in word])
- 当てられた文字は表示し、まだ当てられていない文字は ‘_’ で隠します。
現在の状況表示:
print(f"\n単語: {hidden_word}")
print(f"残りの挑戦回数: {attempts}")
- 現在の単語の状態と残りの挑戦回数を表示します。
勝利判定:
if hidden_word == word:
print("おめでとう!単語を当てました!")
break
- 単語が完全に当てられたら、おめでとうメッセージを表示してゲーム終了。
プレイヤーの入力:
guess = input("1文字を予想してください: ").lower()
- プレイヤーに1文字の入力を求めます。入力は小文字に変換されます。
入力の判定と処理:
if guess in guessed_letters:
print("その文字は既に使用済みです。")
elif guess in word:
print("正解!その文字は単語に含まれています。")
guessed_letters.add(guess)
else:
print("不正解。その文字は単語に含まれていません。")
attempts -= 1
guessed_letters.add(guess)
- 既に使用済みの文字かチェック
- 正解の場合、メッセージを表示し、正解リストに追加
- 不正解の場合、メッセージを表示し、挑戦回数を減らし、使用済みリストに追加
このループが、ゲームの基本的な流れを制御しています。プレイヤーの入力に応じて適切な処理を行い、ゲームの状態を更新していきます。
hidden_wordの生成
hidden_word = ''.join([letter if letter in guessed_letters else '_' for letter in word])
この行は、現在のゲーム状況を表示するための文字列を生成します。リスト内包表記と条件付き式を使用しているため、初心者には少し複雑に見えるかもしれません。以下のように分解して考えると理解しやすいでしょう:
- for letter in word: 正解の単語の各文字について処理を行います。
- if lerrer guessed_letters else ‘_’: もし文字が既に予想されていれば(guessed_lettersに含まれていれば)その文字を表示し、そうでなければ’_’を表示します。
- ‘ ‘ . join([…]): 生成されたリストの要素を空文字で結合して、一つの文字列にします。
例えば、正解が”python”で、プレイヤーが’p’と’n’を予想している場合、hidden_wordは”p____n”となります。
ゲームの勝利条件チェック
if hidden_word == word:
print("おめでとう!単語を当てました!")
break
hidden_wordがwordと完全に一致
ゲームの勝利条件チェック
if hidden_word == word:
print("おめでとう!単語を当てました!")
break
hidden_wordがwordと完全に一致した場合、プレイヤーが単語を当てたことになります。おめでとうメッセージを表示し、
break文でwhileループを終了させてゲームを終了します。
プレイヤーの入力受付
guess = input("1文字を予想してください: ").lower()
input()関数を使用してプレイヤーからの入力を受け付けます。
.
lower()メソッドを使用して入力を小文字に変換することで、大文字小文字の区別をなくしています。
入力の処理
if guess in guessed_letters:
print("その文字は既に使用済みです。")
elif guess in word:
print("正解!その文字は単語に含まれています。")
guessed_letters.add(guess)
else:
print("不正解。その文字は単語に含まれていません。")
attempts -= 1
guessed_letters.add(guess)
このif-elif-else文で、プレイヤーの入力を3つの場合に分けて処理します:
- 既に予想された文字の場合
- 正解の単語に含まれる文字の場合
- それ以外(不正解)の場合
正解と不正解の場合、その文字をguessd_lettersに追加します。不正解の場合は追加でattemptsを1減らします。
3. ゲームオーバーの処理
if attempts == 0:
print(f"\nゲームオーバー。正解は {word} でした。")
whileループが終了した後、この条件文でゲームオーバーかどうかを判定します。attempsが0になった場合(つまり、プレイヤーが単語を当てられなかった場合)、ゲームオーバーメッセージと正解の単語を表示します。
プログラムの拡張アイデア
基本的なハングマンゲームができたら、次は以下のような機能を追加して、さらに面白くしてみましょう。
- 難易度設定:単語リストを難易度別に分けて、プレイヤーが選べるようにする。
- ヒント機能:残り回数が少なくなったら、単語に関するヒントを表示する。
- スコア機能:残り回数や単語の長さに基づいてスコアを計算する。
- グラフィカルな表示:テキストベースのハングマンの絵を表示する。
これらゲームの拡張や次のステップに興味を持った方は、専門的な指導を受けることも検討してみてはいかがでしょうか?「【2024年最新版】Python講座で学べるプログラミングスクール10選を徹底比較」では、様々なレベルに対応したPython講座を提供するスクールを紹介しています。自分のペースとレベルに合った学習環境を見つけるのに役立つでしょう。
【Pythonゲーム】初心者でも簡単!ハングマンで学ぶ文字列操作 | コピペで気軽にチャレンジ! まとめ
このプログラムを通じて、以下のようなPythonの基本的な概念を学ぶことができました。
- 基本的なプログラム構造
・while ループを使用したゲームの制御条件分岐
・(if-elif-else)を用いた様々な状況への対応 - Pythonの重要な機能
・リスト、セット、文字列の操作
・ランダム選択(random.choice())
・ユーザー入力の処理(input()) - 文字列操作
・文字列の結合(”.join())
・リスト内包表記を用いた効率的な文字列処理 - ゲームロジック
・隠された単語の表示と更新
・プレイヤーの入力に基づくゲーム状態の更新
・勝利・敗北条件の実装
ハングマンゲームは単純なルールながら、プログラミングの基本的な要素をたくさん含んでいます。このゲームを作ることで、Pythonの基礎を楽しく学ぶことができるでしょう。
今回の経験を活かし、さらに複雑なプログラムに挑戦したり、このゲームを拡張したりすることで、プログラミングスキルを向上させることができます。
自分なりにアレンジを加えて、オリジナルのハングマンゲームを作ることにもチャレンジしてみてくださいね!
今回の経験を活かし、さらに複雑なプログラムに挑戦したり、このゲームを拡張したりすることで、プログラミングスキルを向上させることができます。
自分なりにアレンジを加えて、オリジナルのハングマンゲームを作ることにもチャレンジしてみてくださいね!