風まかせ郵便気球：5段階教材

Python3.11以上 / Pyxel2.9.9。検査はLinux/Python3.12.14/Pyxel2.9.9。
ZIPを全展開し、READMEのあるフォルダで起動。原作Aの有限航路を題材にします。
Windows:
py -3 -m venv .venv
.venv\Scripts\python -m pip install -r requirements.txt
.venv\Scripts\python 01_wind.py
.venv\Scripts\python 05_undo.py
macOS/Linux:
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python 01_wind.py
.venv/bin/python 05_undo.py
Windows/macOSのGUI実測ではありません。各.pyは独立し、実行時に外部ファイル不要。

01: 中層を飛行中。Spaceで一手。燃料/郵便/期限なし。
02: 飛行中、上/下/右で上昇/下降/高度維持。燃料/係留/郵便/期限なし。
03: 家から開始。燃料と有限補給、係留。郵便の集計・期限なしの練習。
04: 原作Aの配達、帰着、期限24、安全な途中帰還を追加。
05: 全状態Undo。本文と確認手順はLESSON.md。

最終操作:
上/下/右: 飛行判断を即時確定。原作の高度案選択→Zとは異なる教材用入力。
Z: 係留から中層へ離陸。Space: 係留したまま一手待つ。
C: 家D0から安全に切り上げRETURNED（失敗ではないが全配達WONとも別）。
X: 05のUndo。R: 初期化。Esc: 終了。
一キーを押して離してから次へ。通常複合操作を拒否し全操作キーの解放を待ちます。
新しいRは同時押し/結果中でも優先。Xは結果の前へ戻せます。
予告は仮計算で時間/燃料/履歴を消費しません。考える現実時間ではTは進みません。
燃料0でも下降/維持はできます。全配達帰着が期限ちょうどなら成功が優先されます。

原作との違い:
Aのみ。B/C、比較版、表紙、停止、日本語字形、予報列カーソル、再現ファイル保存を省略。
整数の架空の航路で、実際の気象や航空の助言ではありません。
元ゲームのコードと権利文書は改変せず保存しています。

困ったとき:
No module named pyxel: 起動する同じ.venvのpythonでrequirements.txtを導入。
ファイルがない: ZIPを展開しREADMEのあるフォルダへ移動。
動かない: 画面をクリックし、全操作キーを離してから押す。
MOORED: 係留中はZ/Spaceを使用。AIR: 飛行中は上/下/右。
HEIGHT/FUEL: 無理な高さまたは燃料不足。拒否は一手を消費しません。
最初のSpaceで動かない: 01の最初の中層風は0。Tは1へ進みます。
補給が復活しない: 在庫は有限。待つだけでは増えません。
WONにならない: 二件配達に加え、家D0への低空帰着が必要。
DRIFT/LATE: 範囲外または期限。05ならX、Rならやり直し。
表示初期化エラー: GUI/OpenGL対応PCで実行。headless成功は全OSのGUI保証ではありません。

検査:
python test_stages.py
任意の原作照合はPYXEL053_ORIGINALに原作フォルダまたはmodel.pyを指定。
未指定なら任意1件を明示skipし、同梱fixtureとの比較は実行します。
原作Aの到達する全7749State/54243候補遷移（安全帰還と終了も含む）を04/05で照合。
全入力履歴や任意の新しい便の可解性を列挙した主張ではありません。
Undoは24系列×64操作を別照合。境界の合成状態と到達状態の検査は区別。
qa/generate_reference.pyは別途与えた原作から資料を再生成します。
実Pyxel画像・隔離起動・CP932既定読み取り模擬・原作保持の記録はqa/。

未確認: ブラウザー、Windows/macOS GUI、OSキー入力、人の理解度/面白さ、音声。
音は実装していません。元のMIT全文とassets/NOTO-LICENSE.txtを保持。
ASCIIと図形だけで描画し、外部Noto字形データは使用していません。
