こんにちは、Python初心者のハナマルコです。
Pythonでゲームが作れるって話を聞きました。ゲーム好きのハナマルコとしては、これはやらないと!ってことで、いつものようにチャッピー先生に相談しました。

チャッピー先生!Pythonでゲームが作れるってホント?



はい、できます。初心者向けにテキストベースで遊べるゲームを紹介します。
今回は、私がPythonで実際に作った「数当てゲーム(ナンバーズ風)」と「LOTO6予想アプリ」の2本立てをご紹介します。イライラしながらもなんとか動いたコードと、何度も外した失敗談もたっぷり詰め込みました!
実践シリーズを初回から読みたい方:
▶ Pythonで何ができる?初心者がChatGPTと一緒に調べてみた(実践0日目)
Pythonで数当てゲームを作って遊ぼう|ナンバーズ風ロジックを実装
ゲーム概要
Pythonで作った数当てゲームは、3桁の数字(各桁は0〜9で重複なし)をコンピュータがランダムに選び、それを10回以内で当てるというもの。
- 数字と位置が正解:
Hit
- 数字は正解だけど位置が違う:
Blow
というルールです。位置と数字を推理しながら絞っていく感じ。
完成したコード(コピペでOK!):Google Colabにコピペで動きます。
import random
def generate_number():
return ''.join(random.sample("0123456789", 3))
def get_feedback(secret, guess):
hit = sum(s == g for s, g in zip(secret, guess))
blow = sum(min(secret.count(d), guess.count(d)) for d in set(guess)) - hit
return hit, blow
def is_valid_guess(guess):
return (
guess.isdigit() and
len(guess) == 3 and
len(set(guess)) == 3
)
print("🔍 推理型ナンバーズ3(数字と位置を当てよう)")
print("3桁の数字を当ててください(重複なし)")
secret = generate_number()
MAX_TRIES = 10
for attempt in range(1, MAX_TRIES + 1):
while True:
guess = input(f"[{attempt}回目] 3桁の数字: ")
if is_valid_guess(guess):
break
print("⚠️ 無効な入力。3桁で数字の重複はなし。")
hit, blow = get_feedback(secret, guess)
print(f"🔎 結果: {hit} Hit / {blow} Blow")
if hit == 3:
print(f"🎉 正解!{attempt}回目でクリア!")
break
else:
print(f"😢 正解は {secret} でした。")
Google Colabについて詳しく知りたい方は:
▶ 【実践1日目】無料で始めるPython学習:ChatGPTと初心者がステップアップする方法
ポイント解説
random.sample()
:重複なしでランダムな数字を取り出す。ここがナンバーズらしさの肝!zip()
とsum()
:位置と数字の一致(Hit)を数える魔法コンビ。set()
とmin()
:重複しない数字をBlowとして数える工夫。input()
:ユーザーからの数字入力。ちゃんと検証してくれる親切設計。
プレイ実況:ハナマルコ、ブチギレル!
[1回目] 3桁の数字: 123
🔎 結果: 0 Hit / 1 Blow
[2回目] 3桁の数字: 456
🔎 結果: 1 Hit / 0 Blow
[3回目] 3桁の数字: 489
🔎 結果: 0 Hit / 2 Blow
[4回目] 3桁の数字: 849
🔎 結果: 1 Hit / 1 Blow
[5回目] 3桁の数字: 894
🔎 結果: 0 Hit / 3 Blow



はああああっ!?なんで!!惜しいのに正解できない!チャッピー!もうやだ!



順番が近いですよ!あと一歩です、がんばってください。
[9回目] 3桁の数字: 984
🔎 結果: 3 Hit / 0 Blow
🎉 正解!9回目でクリア!



(涙)やっと…やっと終わった…Python嫌いだけど、ちょっと好きかも…
Pythonで作るLOTO6予想アプリ|データ分析で統計体験
ゲーム概要
「出やすい数字をカウントして、その中から6つ選ぶ」という予測型ロジック。実際に当たるかはさておき、Pythonで統計っぽいことを体験できます。
完成したコード(コピペOK!):Google Colabにコピペで動きます。
import random
from collections import Counter
def generate_fake_history():
history = []
for _ in range(100):
numbers = sorted(random.sample(range(1, 44), 6))
history.append(numbers)
return history
def count_frequency(history):
flat = [num for line in history for num in line]
counter = Counter(flat)
return counter.most_common()
def generate_smart_pick(freq_data, top_n=20):
top_numbers = [num for num, _ in freq_data[:top_n]]
prediction = sorted(random.sample(top_numbers, 6))
return prediction
history = generate_fake_history()
frequency = count_frequency(history)
print("📊 頻出数字ランキング(上位10):")
for i, (num, count) in enumerate(frequency[:10], 1):
print(f"{i:>2}: 数字 {num:<2} が {count} 回出現")
print("\n🎯 今回のおすすめ予想:")
for i in range(5):
prediction = generate_smart_pick(frequency)
print(f"{i+1}. {prediction}")
Google Colabについて詳しく知りたい方は:
▶ 【実践1日目】無料で始めるPython学習:ChatGPTと初心者がステップアップする方法
ポイント解説
collections.Counter
:数字の出現回数を数えてくれる頼れるやつ。list内包表記
:2次元リストを1次元に。最初は混乱したけど慣れると便利!most_common()
:よく出る数字をランキング形式で取得。random.sample()
:予想の組み合わせも完全ランダムじゃなく、よく出る数字から選ぶ工夫。
実行してみた結果
📊 頻出数字ランキング(上位10):
1: 数字 7 が 16 回出現
2: 数字 22 が 15 回出現
…
🎯 今回のおすすめ予想:
1: [4, 7, 11, 22, 33, 36]



よっしゃ!これで当たったら宝くじ生活だ!
→ 当たりませんでした。(即死)
でも「データから傾向を見て選ぶ」という行為だけで、分析してる感がすごかった!
初心者でも、イラっとしながら楽しめるPython
Pythonを始めたばかりの私は、記号を見るだけで蕁麻疹が出そうでした。でも、ゲームを目標にすることで「こうすれば動くんだ!」と理解が進みました。
もちろん何度もミスしてエラー出して、チャッピーに泣きつきましたけど、気づけばfor
やdef
が読めるように。



私、コピペだけじゃなく意味も少しずつわかってきたかも…
まとめ
この2つのゲームで学んだPythonの主な要素
import random
:ランダムな値を生成するために使用collections.Counter
:リストの要素をカウントしてランキングを作るfor文 / if文 / 関数定義 (def)
:基本構文をくり返し使うことで自然と覚えられた!input()
とバリデーションチェック:ユーザーとのやりとりも体験
もしあなたが「Python興味あるけど難しそう…」と思っていたら、まずはこういう遊び感覚のミニゲームから始めてみてください。
ハナマルコでもできたんです。あなたも、絶対にできます!
最後まで読んでいただき、ありがとうございました!
iPhoneだけでPythonを動かしたい方は:
▶ Pythonistaアプリレビュー|iPhoneでPythonを書く方法と初心者のつまずきポイント
実践シリーズで学習を続ける:
ー 【実践0日目】Python入門:ChatGPTと一緒に「Pythonとは?」を調べてみた
ー 【実践1日目】無料で始めるPython学習:ChatGPTと初心者がステップアップする方法
ー 【実践2日目】Python超入門:ChatGPTと学ぶ割り勘・時間計算スクリプト
ー 【実践3日目】Pythonで家計簿&残業代計算:初心者でもできる生活支援スクリプト
ー 【実践4日目】Python初心者向け:安全なパスワード自動生成スクリプトを作ってみた
ー 【実践5日目】Python✕スプレッドシートで作るTODO管理ツール
ー 【実践6日目】初心者がつまずくPythonエラーTOP10をチャッピー先生が解説
ー 【実践7日目】Python初心者向け!Colabでアニメ風抽選ルーレットを作ろう
ー 【実践8日目】ゲームで学ぶPython入門|数当て&LOTO6予想に挑戦! 今ココ