
一つ前のLessonでは数字当てゲームを作成しました。
今回は簡単なじゃんけんゲームを作成しましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子を理解しよう
・Lesson2-2:条件分岐(if-else文)を理解しよう
・Lesson2-3:条件分岐(if-elif-else文)を理解しよう
・Lesson2-4:条件分岐(match文)を理解しよう
・Lesson2-5:繰り返し処理(for文)を理解しよう
・Lesson2-6:繰り返し処理(while文)を理解しよう
・Lesson2-7:繰り返しの制御を理解しよう
・Lesson2-8:エラーメッセージを読めるようになろう
・Lesson2-9:例外処理の基礎を理解しよう
・練習問題2-1:ハイアンドロー ゲームを作ろう
・練習問題2-2:数字当てゲームを作ろう
・練習問題2-3:簡単なじゃんけんゲームを作ろう ◁今回はココ
Lesson3:関数とスコープ編
Lesson4:データ構造編
Lesson5:オブジェクト指向編
次のステップ:Pythonを用いたアプリ開発
Pythonのゲームコード一覧はこちら
Pythonでじゃんけんゲームを作ろう|条件分岐の応用例
簡単なじゃんけんゲームを作成しましょう。
プレイヤーが「グー」「チョキ」「パー」のいずれかを選び、コンピュータがランダムに選んだ手と勝負します。勝敗を判定し、その結果を表示するプログラムです。
問題の詳細条件
以下の要件に従ってコードを完成させてください。
random
モジュールをインポートして、コンピュータの手をランダムに決定すること。- プレイヤーに「グー: 0、チョキ: 1、パー: 2」の中から数字を選んで入力してもらうこと。
- 入力された数字をもとにプレイヤーの手を表示すること。
- コンピュータの手もランダムに決定し、表示すること。
- プレイヤーとコンピュータの手を比較し、勝敗を判定すること(引き分けの場合はその旨を表示する)。
- 勝敗結果を画面に表示すること。
ただし、以下のような実行結果となるコードを書くこと。
じゃんけんゲームを始めます! じゃんけんの手を入力してください(グー: 0, チョキ: 1, パー: 2): 0 コンピューターの手: チョキ あなたの勝ちです!
【ヒント】難しいと感じる人だけ見よう
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:Randomモジュールのインポート
2:「じゃんけんゲームを始めます!」と出力
3:「じゃんけんの手を入力してください(グー: 0, チョキ: 1, パー: 2)」と出力
4:ユーザーに手を入力させ、int型に変換して変数player_choiceに代入
5:randomモジュールで生成した値を変数computer_choiceに代入
6:if文にてplayer_choiceの値が0であるか判定
□ 真の場合、変数player_handに「グー」を代入
7:elif文にてplayer_choiceの値が1であるか判定
□ 真の場合、変数player_handに「チョキ」を代入
8:else文
□ 変数player_handに「パー」を代入
9:if文にてcomputer_choiceの値が0であるか判定
□ 真の場合、変数computer_handに「グー」を代入
10:elif文にてcomputer_choiceの値が1であるか判定
□ 真の場合、変数computer_handに「チョキ」を代入
11:else文
□ 変数computer_handに「パー」を代入
12:コンピュータの手を表示
13:if文にてplayer_choiceとcomputer_choiceが等しいか判定
□ 真の場合、「引き分けです!」と出力
14:elif文にて勝敗の条件を判定
□ player_choiceが0かつcomputer_choiceが1、またはplayer_choiceが1かつcomputer_choiceが2、またはplayer_choiceが2かつcomputer_choiceが0である場合、「あなたの勝ちです!」と出力
15:else文
□ 「あなたの負けです!」と出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
import random # じゃんけんの手を表示 print("じゃんけんゲームを始めます!") print("じゃんけんの手を入力してください(グー: 0, チョキ: 1, パー: 2)") # プレイヤーの手を入力 """【穴埋め問題1】 ここにユーザーからの入力を受け取り、その値をint型に変換して変数player_choiceに格納するコードを書いてください。 """ # コンピュータの手をランダムに決定 """【穴埋め問題2】 ここにコンピュータの手をランダムに決定し、変数computer_choiceに格納するコードを書いてください。 """ # じゃんけんの手の名前 """【穴埋め問題3】 ここにプレイヤーの選択によって変数player_handに「グー」「チョキ」「パー」を代入するif-elif-else文を書いてください。 """ """【穴埋め問題4】 ここにコンピュータの選択によって変数computer_handに「グー」「チョキ」「パー」を代入するif-elif-else文を書いてください。 """ # コンピュータの手を表示 print("コンピューターの手:", computer_hand) # 勝敗の判定 """【穴埋め問題5】 ここに勝敗を判定するif-elif-else文を書いてください。引き分けの場合は「引き分けです!」、プレイヤーが勝った場合は「あなたの勝ちです!」、プレイヤーが負けた場合は「あなたの負けです!」と出力するコードを書いてください。 """
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
問題の答え合わせと解説
この問題の一つの正解例とそのコードの解説を以下に示します。
一つの正解例
例えば以下のようなプログラムが考えられます。
- 正解コード
-
import random # じゃんけんの手を表示 print("じゃんけんゲームを始めます!") print("じゃんけんの手を入力してください(グー: 0, チョキ: 1, パー: 2)") # プレイヤーの手を入力 player_choice = int(input("あなたの選択: ")) # コンピュータの手をランダムに決定 computer_choice = random.randint(0, 2) # じゃんけんの手の名前 if player_choice == 0: player_hand = "グー" elif player_choice == 1: player_hand = "チョキ" else: player_hand = "パー" if computer_choice == 0: computer_hand = "グー" elif computer_choice == 1: computer_hand = "チョキ" else: computer_hand = "パー" # コンピュータの手を表示 print("コンピューターの手:", computer_hand) # 勝敗の判定 if player_choice == computer_choice: print("引き分けです!") elif (player_choice == 0 and computer_choice == 1) or \ (player_choice == 1 and computer_choice == 2) or \ (player_choice == 2 and computer_choice == 0): print("あなたの勝ちです!") else: print("あなたの負けです!")
正解例の詳細解説
今回のPythonコードはプレイヤーとコンピュータがじゃんけんを行うシンプルなゲームです。
それではコードの各ブロックを詳しく解説していきます。
- 詳細解説
-
ライブラリのインポート
import random
ここでは
random
モジュールをインポートしています。このモジュールはコンピュータの手をランダムに選ぶために使います。
ゲームの開始メッセージの表示
print("じゃんけんゲームを始めます!") print("じゃんけんの手を入力してください(グー: 0, チョキ: 1, パー: 2)")
この部分ではゲームの開始メッセージを表示しています。
またプレイヤーが入力する選択肢として、「グー: 0」「チョキ: 1」「パー: 2」を伝えています。
プレイヤーの入力を取得
player_choice = int(input("あなたの選択: "))
input
関数を使ってプレイヤーからの入力を取得します。取得した値は文字列なので
int()
で整数に変換しています。コンピュータの手をランダムに決定
computer_choice = random.randint(0, 2)
random.randint(0, 2)
を使って、コンピュータが「0(グー)」「1(チョキ)」「2(パー)」のいずれかをランダムに選びます。プレイヤーの選んだ手の名前を設定
if player_choice == 0: player_hand = "グー" elif player_choice == 1: player_hand = "チョキ" else: player_hand = "パー"
プレイヤーが選んだ手(0, 1, 2)に応じて、
player_hand
に「グー」「チョキ」「パー」の文字列を代入しています。この
if-elif-else
文で条件分岐を行い、対応する手の名前を決定します。コンピュータの選んだ手の名前を設定
if computer_choice == 0: computer_hand = "グー" elif computer_choice == 1: computer_hand = "チョキ" else: computer_hand = "パー"
コンピュータが選んだ手(0, 1, 2)に応じて
computer_hand
に「グー」「チョキ」「パー」の文字列を代入しています。この部分も
if-elif-else
文を使っています。コンピュータの手を表示
print("コンピューターの手:", computer_hand)
ここではコンピュータが選んだ手を表示しています。
勝敗の判定
if player_choice == computer_choice: print("引き分けです!") elif (player_choice == 0 and computer_choice == 1) or \ (player_choice == 1 and computer_choice == 2) or \ (player_choice == 2 and computer_choice == 0): print("あなたの勝ちです!") else: print("あなたの負けです!")
この部分では
if-elif-else
文を使ってプレイヤーの手とコンピュータの手を比較し、勝敗を判定しています。- プレイヤーとコンピュータの手が同じなら「引き分けです!」を表示します。
- プレイヤーが勝つパターン(グー vs チョキ、チョキ vs パー、パー vs グー)なら「あなたの勝ちです!」を表示します。
- それ以外のケースでは「あなたの負けです!」と表示します。
まとめ
今回のコードでは条件分岐(
if-elif-else
文)やユーザーからの入力、コンピュータのランダムな選択など、Pythonの基本的な機能を学びました。このシンプルなじゃんけんゲームを通じて、ゲームロジックの実装方法も体験できたと思います。
Pythonのゲームコード一覧はこちら
質問用コンタクトフォーム
この記事はAIを用いて書いた記事です。
人間の目による確認も行っていますが、もし間違い等ありましたらご指摘頂けると大変助かります。