018 逆さの池: 5段階の独立Pyxel教材
Python 3.11+ / Pyxel 2.9.9

LESSON.mdを読み、01_motion.pyから順に実行してください。
01 歩行・跳躍 / 02 重力反転 / 03 再装填と浮遊 / 04 岸と棚 / 05 宝と帰還
各pyは画像・音・別のpyなしで起動でき、改名もできます。

準備: python -m pip install -r requirements.txt
起動: python 01_motion.py
標準ライブラリのテスト: python -B test_stages.py
最終版のハッシュ検証: python -B qa/verify_freeze.py

原作比較は任意です。PYXEL018_ORIGINAL_DIRを原作コピーへ設定すると4件の比較も実行します。
設定なしなら明確な理由でskipし、教材単体のテストは実行します。
全Path.read_text/write_textはUTF-8を明示します。

左右 移動 / SPACE 跳躍 / P 停止 / R 全初期化 / Esc 終了
04/05: Zで直前の横断stepの前へ。
05: 1/2/3で部屋選択、成功後Nで次へ。
切替後は操作キーを全部離してから押してください。

QA専用: python 03_rearm_float.py --headless-smoke --demo-checkpoint --screenshot qa/sample.png --state-output qa/sample.json
--framesは通常4〜600、demo時はその段階のDEMO_FRAMES〜600。
不正引数はPyxelのimport前に拒否します。通常プレイにQA引数は不要です。
凍結済み配布物の内部へ新しい結果を書けば検証が不一致になるので、再検証・練習はコピーで行ってください。

原作のコード・文書はMIT。LICENSEと元のLICENSE.txtを保存しています。
参照されるNotoのSIL OFL告知をassets/NOTO-LICENSE.txtに保存しています。
日本語bitmap字形は教材実行に使っていません。
qa/REVIEW.mdの実行証拠と確認範囲を参照してください。
人の学習成果、OSキーボード入力、ブラウザ、音の実聴、Windows/macOS実機は未検証です。
