はじめに
こんにちは、へたれです。
今回は、Python(pygame)を使って「自作のリズムゲーム」を作ってみました。
学生時代に遊んだ「矢印が流れて、タイミングよく押す」あのゲーム──。
自分の曲で動かしたら楽しそうだなと思い、思い切ってプログラムを書いてみました。
最初は「Pythonでゲームなんて無理だろ」と思っていましたが……
やってみたら意外といける。しかも楽しい。
🎵 作品の概要
タイトルは 「へたれリズムゲーム」。
自作曲「HetareSummer」に合わせて、矢印をタイミングよく押していく簡単なリズムゲームです。
使用ライブラリ:pygame
音楽:自作(へたれSummer)
使用画像:自作ネオン風矢印(透明PNG)
動作環境:Windows + Python 3.9以降
操作方法もシンプルです👇
操作内容↑ → ↓ ←タイミングに合わせて押すQ一時停止R再開ESC終了
判定も実装してあり、Perfect / Great / Good / Miss が表示されます。
Good以上なら矢印は消え、コンボが加算される仕組みです。
💻 実際のゲーム画面
https://www.youtube.com/shorts/oxIJ-apSNFk
👉 背景に画像を敷いて、上から矢印が流れてきます。
中央のラインに重なった瞬間にキーを押すと、タイミングに応じた判定が表示されます。
🧩 コードの一部紹介
実装はすべてPythonで行っています。
ゲームの動作は、pygame というライブラリが担っています。
# 判定処理の一部
def check_hit(direction):
global score, combo, result, result_timer
candidates = [a for a in arrows if a.active and a.dir == direction]
if not candidates:
result, _, _ = "Miss", 0, (255,80,80)
combo = 0
result_timer = 40
return
target = min(candidates, key=lambda a: abs(a.y - target_y))
diff = abs(target.y - target_y)
name, pts, _ = judge_from_diff(diff)
if name == "Miss":
result = "Miss"
combo = 0
result_timer = 40
else:
result = name
score += pts
combo += 1
target.active = False
result_timer = 40
キー入力の判定を差分で測り、タイミングによってスコアを加算します。
シンプルですが、リズムゲームの本質部分です。
⚙️ 一時停止&再開機能
Qキーで一時停止、Rキーで再開できるようにしました。
一時停止中は「PAUSED」と表示され、音楽も自動で停止します。
再開時は音楽もリズムも再スタート。
この部分を作ったときはちょっと感動しました。
🎨 こだわりポイント
矢印をネオン風で光るようにデザイン
透明背景でPNG化して自然に合成
スコア・コンボ・判定を見やすく中央表示
自作曲のテンポに合わせてスピード調整
プログラムと音楽、デザインがすべて連動した瞬間は本当に楽しかったです。
💡 学びと気づき
Pythonでも、ちょっと工夫すれば**「リアルタイム性のあるゲーム」**が作れる。
pygameは昔ながらのライブラリですが、音楽・画像・入力をまとめて扱える点が強力です。
また、シンプルな構造にすることで、ミス判定やコンボ管理のような要素も理解しやすくなりました。
🧠 今後の展開
BPMに合わせた譜面生成
複数曲対応(フォルダ読み込み)
難易度設定(EASY / HARD)
オンラインランキング対応(FlaskやStreamlitで)
……など、夢が広がります。
いつか「へたれリズムゲームDX」として再登場するかもしれません😎
📜 注意書き(著作権など)
この作品は個人制作の非商用プロジェクトです。
コナミ株式会社の「Dance Dance Revolution」など既存商標・作品とは一切関係がありません。
音楽・コード・画像はすべて自作またはフリー素材を使用しています。
収益化・販売などの意図はありません。
🎵 まとめ
Python × 音楽で、ここまで遊べるとは思っていませんでした。
プログラムが動き、音に合わせて光る──
その瞬間、“コードが生きている” と感じられます。
ぜひ、皆さんも自分の曲で遊んでみてください。
プログラムが音楽を踊らせる瞬間、めちゃくちゃ楽しいです!
✍️ 作者:へたれ
🎧 楽曲:「へたれSummer」
💻 開発環境:Python 3.9 + pygame
📅 制作期間:約30分