Pythonで簡単なゲームを作ろう!夏休み自由研究【中学生OK】

Pythonで数当てゲーム・じゃんけん・クイズゲームを作る方法を中学生向けに解説。コピペで動くコード付き。夏休みの自由研究にぴったりです。

2026年5月2日

「Pythonでゲームを作ってみたい!」と思ったことはありませんか?

夏休みの自由研究にプログラミングを選ぶ人が増えています。中でもPython(パイソン)は文法がシンプルで、中学生でもゲームを作れます。

この記事では、コピペで動く3つのゲームを紹介します。数当てゲーム・じゃんけんゲーム・クイズゲームです。どれも20行以内で作れるので、初めてでも大丈夫です。

Pythonの基本をまだ学んでいない人は、先に「夏休みにPythonを始めよう」を読んでおくとスムーズです。

この記事で作るゲーム

この記事では3つのゲームを作ります。

ゲーム1: 数当てゲーム

コンピュータが選んだ秘密の数を当てるゲームです。「もっと大きい」「もっと小さい」のヒントを頼りに正解を目指します。

ゲーム2: じゃんけんゲーム

コンピュータとじゃんけんで対戦するゲームです。勝ち・負け・あいこを判定します。

ゲーム3: クイズゲーム

3択クイズを出題して、正解数をカウントするゲームです。問題を自分で追加できます。

どのゲームも、Google Colabやパソコンのターミナルで動かせます。必要なのはPythonだけです。特別なソフトのインストールは不要です。

ゲーム1: 数当てゲーム

コンピュータが1から100の中からランダムに数を選びます。プレイヤーはヒントを頼りに正解を当てます。

コード全文

import random

answer = random.randint(1, 100)
count = 0

print("1から100の数を当ててください!")

while True:
    guess = int(input("予想を入力: "))
    count = count + 1

    if guess == answer:
        print("正解!" + str(count) + "回で当たりました!")
        break
    elif guess < answer:
        print("もっと大きい数です")
    else:
        print("もっと小さい数です")

コードの解説

  • import random: ランダム(乱数)を使うための準備です
  • random.randint(1, 100): 1から100の間でランダムな整数を1つ選びます
  • while True: 正解するまで永遠にくり返します
  • int(input(...)): キーボードから入力された文字を数値に変換します
  • break: ループを抜けて終了します

ゲームの流れ:

  1. コンピュータが秘密の数を決める
  2. プレイヤーが数を入力する
  3. 大きいか小さいかヒントを出す
  4. 正解したら回数を表示して終了

改造アイデア

  • 範囲を1〜1000に広げて難易度を上げる
  • 「10回以内に当てられたらクリア」のように制限をつける
  • 最後に「あなたのスコアは○点です」と評価を表示する
  • 2人対戦モードを作る(交互に入力して少ない回数で当てた方が勝ち)

ゲーム2: じゃんけんゲーム

コンピュータとじゃんけんで対戦します。グー・チョキ・パーを入力して勝敗を判定します。

コード全文

import random

hands = ["グー", "チョキ", "パー"]

print("じゃんけんゲーム!")
player = input("グー・チョキ・パーを入力: ")
computer = random.choice(hands)

print("あなた: " + player)
print("コンピュータ: " + computer)

if player == computer:
    print("あいこ!")
elif (player == "グー" and computer == "チョキ") or \
     (player == "チョキ" and computer == "パー") or \
     (player == "パー" and computer == "グー"):
    print("あなたの勝ち!")
else:
    print("あなたの負け...")

コードの解説

  • hands = ["グー", "チョキ", "パー"]: リスト(配列)に3つの手を入れています
  • random.choice(hands): リストの中からランダムに1つ選びます
  • if player == computer: 同じ手ならあいこです
  • elif (...): プレイヤーが勝つ3パターンを「or」でつなげています
  • else: 上のどちらでもなければ負けです

ポイント: 「\」は行が長いときに次の行に続けるための記号です。

改造アイデア

  • 3回勝負にして勝ち数をカウントする
  • 勝率を計算して表示する
  • 「グー」「チョキ」「パー」を数字(1, 2, 3)で入力できるようにする
  • コンピュータの手の傾向を分析する機能をつける

プログラミング言語の選び方について詳しくは「プログラミング言語の選び方」を参考にしてください。

ゲーム3: クイズゲーム

3択クイズを出題して、正解数をカウントするゲームです。問題を自由に追加できます。

コード全文

score = 0

# 問題データ: [問題文, 選択肢1, 選択肢2, 選択肢3, 正解番号]
quizzes = [
    ["日本で一番高い山は?", "富士山", "北岳", "槍ヶ岳", "1"],
    ["太陽系で一番大きい惑星は?", "土星", "木星", "海王星", "2"],
    ["水の化学式は?", "CO2", "H2O", "NaCl", "2"],
]

for quiz in quizzes:
    print("\n" + quiz[0])
    print("1: " + quiz[1])
    print("2: " + quiz[2])
    print("3: " + quiz[3])
    answer = input("答えの番号を入力: ")

    if answer == quiz[4]:
        print("正解!")
        score = score + 1
    else:
        print("不正解... 答えは" + quiz[int(quiz[4])] + "です")

print("\n結果: " + str(len(quizzes)) + "問中" + str(score) + "問正解!")

コードの解説

  • quizzes: 問題データをリストのリストで管理しています
  • quiz[0]: 問題文、quiz[1]〜quiz[3]: 選択肢、quiz[4]: 正解番号
  • for quiz in quizzes: 問題を1つずつ取り出してくり返します
  • "\n": 改行を入れて見やすくしています
  • len(quizzes): 問題の総数を取得します

ポイント: 問題を追加したいときは、quizzesリストに新しい行を追加するだけです。

改造アイデア

  • 問題を10問以上に増やす
  • ランダムな順番で出題する(random.shuffle(quizzes)を使う)
  • 正解率に応じてランク(S, A, B, C)を表示する
  • 好きな教科の問題集を作って友達に遊んでもらう
  • 制限時間をつける

もっとたくさんのプログラミングアイデアを知りたい人は「夏休みプログラミングアイデア集」もチェックしてみてください。

自由研究としてまとめるコツ

ゲームを作ったら、自由研究のレポートにまとめましょう。

レポートの構成

  1. テーマと動機: なぜこのゲームを作ろうと思ったか
  2. 使った道具: Python、Google Colab(またはVS Code)
  3. 作り方の手順: どんな順番でプログラムを書いたか
  4. プログラムの説明: コードの重要な部分を図や表で解説
  5. 工夫した点: 自分なりに改造した部分
  6. 感想と学んだこと: 難しかったこと、できるようになったこと

工夫した点の伝え方

先生に評価されるポイントは「自分で考えて工夫した部分」です。

良い例:

  • 「最初は3回勝負だったが、5回勝負に変えて勝率も表示するようにした」
  • 「エラーが出たとき、数字以外を入力してもプログラムが止まらないように修正した」
  • 「問題数を増やして、ランダムに出題されるようにした」

発表のポイント

  • 実際にゲームを動かして見せると伝わりやすい
  • 「最初のバージョン」と「改良後のバージョン」を比較して見せる
  • 失敗したことも正直に書く(試行錯誤の過程が評価される)

自由研究のテーマ選びや進め方は「夏休みの自由研究アイデア」で詳しく解説しています。

もっとレベルアップするには

3つのゲームが作れたら、次のステップに挑戦してみましょう。

ステップ1: テキストゲームを発展させる

今回作ったゲームに機能を追加しましょう。たとえば数当てゲームに「ランキング機能」をつけたり、クイズゲームに「カテゴリ選択」をつけたりできます。

ステップ2: GUIゲームに挑戦する

GUI(ジーユーアイ)とは、ボタンや画像を使った画面のことです。今回のゲームはすべてテキスト(文字だけ)で動きますが、Pythonの「tkinter」というライブラリを使うと、ウィンドウやボタンがあるゲームが作れます。見た目がぐっと本格的になります。

ステップ3: Webアプリにする

Pythonの「Flask」というフレームワークを使うと、ブラウザで遊べるゲームが作れます。友達にURLを共有して遊んでもらうこともできます。

ステップ4: 本格的なゲームを作る

「Pygame」というライブラリを使うと、画像やアニメーション、効果音を使った本格的なゲームが作れます。シューティングゲームやアクションゲーム、パズルゲームなども作れるようになります。ここまでできれば、プログラミングの実力は相当なものです。

夏休みのプログラミング学習の計画は「夏休みプログラミング学習ガイド」を参考にしてください。

まとめ

  • ✅ Pythonなら20行以内でゲームが作れる
  • ✅ 数当てゲーム: randomとwhileループで作る
  • ✅ じゃんけんゲーム: random.choiceとif文で作る
  • ✅ クイズゲーム: リストとforループで作る
  • ✅ 改造して自分だけのオリジナルゲームにしよう
  • ✅ 自由研究では「工夫した点」をしっかり書く
  • ✅ 次のステップはGUIやWebアプリに挑戦

まずは1つゲームを動かしてみてください。動いた瞬間の感動が、プログラミング学習の原動力になります。

🚀 プログラミング学習をもっと進めよう!

ゲームが作れたら、次はWebサイト作りにも挑戦してみませんか?このサイトでは、HTML・CSS・JavaScriptを無料で学べるコースを用意しています。

夏休みプログラミング学習ガイドを見る →
目次

コースで実際に手を動かして学ぼう

レッスンではコードを書きながら基礎が身につきます

HTMLコースを始める →

同じテーマの記事

📣 この記事が役に立ったら

Xでシェア

💬 引用する場合はこちらをご利用ください:

Pythonで数当てゲーム・じゃんけん・クイズゲームを作る方法を中学生向けに解説。コピペで動くコード付き。夏休みの自由研究にぴったりです。

出典: https://start-web-programming.com/blog/summer-python-game/