デジタルこどもBASEのロゴ 特定非営利活動法人デジタルこどもBASE 📚 目次
第54回 Lv2 ⏱ 20〜25分

ジャンケン:3回戦で勝ち越し判定

🎯 きょうのミッション

3回戦の勝ち越しを決めるジャンケンプログラム。for で3回くりかえし、勝ち・負け・あいこを数えて、最後にトータルの結果を表示します。

🧠 できるようになること

  • for で複数回戦を実装できる
  • 勝ち数・負け数をカウントできる
  • 完成度の高いゲームプログラムが書ける

🧰 用意するもの

🖼 できあがり

3回ジャンケンして、それぞれの結果と最終的な勝ち越し判定が表示されます。

📺 実行結果
== 第1戦 ==
手: グー
あなた:✊  コンピュータ:✌  → 勝ち
== 第2戦 ==
手: パー
あなた:🖐  コンピュータ:🖐  → あいこ
== 第3戦 ==
手: チョキ
あなた:✌  コンピュータ:✊  → 負け
──────────────
結果:1勝1敗1あいこ → 引き分け!

🚀 やりかた

  1. wins = 0, losses = 0, draws = 0 でカウンタ準備。
  2. for i in range(1, 4): で3回戦。
  3. ループの中でジャンケン処理+勝敗カウント。
  4. ループのあと、合計結果を判定して表示。

🐍 きょうのコード

Python main.py
import random

hands = ["グー", "チョキ", "パー"]
emoji = {"グー": "✊", "チョキ": "✌", "パー": "🖐"}

wins = 0
losses = 0
draws = 0

for i in range(1, 4):
    print(f"== 第{i}戦 ==")
    player = input("手: ")
    computer = random.choice(hands)
    print(f"あなた:{emoji.get(player, '?')}  コンピュータ:{emoji[computer]}", end="")

    if player == computer:
        print("  → あいこ")
        draws += 1
    elif (player == "グー" and computer == "チョキ") \
      or (player == "チョキ" and computer == "パー") \
      or (player == "パー" and computer == "グー"):
        print("  → 勝ち")
        wins += 1
    else:
        print("  → 負け")
        losses += 1

print("──────────────")
print(f"結果:{wins}勝{losses}敗{draws}あいこ", end=" ")

if wins > losses:
    print("→ 勝ち越し!🎉")
elif wins < losses:
    print("→ 負け越し…")
else:
    print("→ 引き分け!")
▶ Trinketを開いて動かす

上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。

💡 きょうのポイント

ループの中でカウンターを増やす+ループの後に結果を判定するパターン。これがゲームのスコア管理の基本です。

🎮 チャレンジ

  • 5回戦に変えて先に3勝した方が勝ちにしよう
  • ジャンケンで勝つたびに「ストリーク(連勝)」を表示しよう
  • コンピュータが負けたら次にチョキを出しにくくする「学習」を入れてみよう

🔁 ふりかえり

  • 3回戦と1回戦、ゲーム性はどう違う?
  • カウンタ変数の値がどうループで変わったか追えた?
  • 次回からは関数を学びます。複雑なプログラムを整理する道具。

👨‍👩‍👧 おうちの人・先生へ

  • 準備:なし。
  • つまずきポイントend=" "print() の組み合わせで改行を制御。混乱したら一旦シンプルに。
  • 声かけ例:「これでもう市販のゲームの一部分は書けるレベル」と励まして。次の関数学習でさらに整理されます。