015 穴あき風船
Python + Pyxel 2.9.9 / 原作ミニゲーム / 2026-10-02 UTC

一吹きで進む。でも空気が減るほど、自然に浮かぶ力も減る。
風と惰性で進むか、今噴いて位置を直すか。3つの航路を飛びます。

起動
Windows: Python 3 を用意し setup.bat を1回実行。以後 play.bat。
macOS/Linux: Python 3 と venv を用意し bash setup.sh。以後 bash play.sh。
既存環境: python -m pip install -r requirements.txt / python app.py
このフォルダだけで起動できます。日本語フォントの追加インストール不要。
ネット接続は初回のPyxel導入だけ。ゲーム本体に追加ライブラリは不要。
開発用 launch.sh は近隣の検証用Pythonを使える補助です。配布時は play.* が標準。

操作
タイトル: 左右で航路選択、SPACEで開始。開始後は給気口につながっています。
方向キー: 押した方向へ噴射。離すと風・惰性・浮力だけで動く。斜めも同じ消費。
SPACE: 給気口の中心から12px以内、速さ15px/s以下なら接続。もう一度で離脱。
P: 一時停止／復帰。空気・移動・給気も止まります。
R: 同じ航路を初めから。破裂／回収ネット時はZで直前の給気口から試し直し。
成功後N: 次の航路。ESC: 終了。F12: 実行画面PNGをmediaへ保存。

ルールと見方
・旗の白い輪の中心14px以内で、速さ18px/s以下を0.4秒保つと成功。
  着陸台は低速受け取り用の輪。見た目の棚は障害物ではありません。
・紙飛行機2つは任意。取りに戻らなくても成功できます。
・空気は通常0.5/秒、噴射中さらに6/秒減ります。噴射加速度90px/s²。
・浮力の大きさは残量と同じ。重力は65。空気65付近が自然な釣り合い。
・給気は35/秒。つながると移動と漏れが止まり、満タンでも勝手に出ません。
・風船の黒い輪（半径7px）が一定の接触範囲。小箱は追加の当たり判定なし。
・木の梁や普通の壁は滑れます。三角の屋根だけ破裂。底の網は回収・局所再開。
・空気0で即死にはなりませんが、噴射と浮力がなくなるので落下します。
・局所再開は空気80・速度0で給気口へ。任意の紙回収は保持します。
・速度上限55px/s。小画面用の近似物理で、現実の浮遊・気体の再現ではありません。

航路
A ふくらんだまま: まず自然に浮かぶ力を知る。旗が高く、残した空気が助けになる。
B 低い給気口: 尖った屋根と梁の下を回り、低い給気口で補充して高い旗へ。
C 満タンなら上がる: 低いトンネル。約70で補充を切り上げるか、満タンを下噴射で抑えるか。
Cは補給を経ない経路も正当。給気回数・消費・紙を別々に示し、安全策を失格にしません。

同梱資料
QA.txt 技術確認と未確認事項 / NOTE.txt note向け記事案 / X_POSTS.txt 投稿案3本
experiment_results.json 定数入力監査・成功入力群・浮力だけを変えた比較
success_replays.json 3航路の入力と状態・終端ハッシュ
media/balloon_automatic_silent.mp4 24秒・無音・自動操作の実Pyxel描画
media/experiment_before.png, experiment_after.png 同じ入力・同じCの比較画像
source_hashes.json 最終検証後のファイルSHA-256（自身を除く）

再検証
python -m unittest -v
python experiment.py
python tools/test_portability.py
PYTHON=/path/to/python bash tools/capture_media.sh（映像再生成のみffmpeg必要）
文字データ再生成だけPillowとNotoフォントが必要。通常起動ではどちらも不要。

状態
実装・モデル機能・実Pyxel描画・ネイティブLinux GUIキー操作を確認。実際の人による面白さと操作感は未確認。
ネイティブGUI操作の有無と詳細はQA.txt。Windows実機動作の保証はしていません。
ソースと図形はオリジナル。文字のライセンスはassets/NOTO-LICENSE.txt。
