拾ったルール 052 — 5段階の日本語Python/Pyxel教材

01_walk.py → 02_spring.py → 03_sail.py → 04_slide.py → 05_undo.py
最初にLESSON.mdを読んでください。各.pyは独立して動き、前の.pyをimportしません。
教科書・試験・権利文書のためにはZIP全体を展開して保持してください。
コード単体を別フォルダーへ移しても実行可能ですが、再配布時はLICENSE類も保持します。

必要: Python 3.11以上、Pyxel 2.9.9、GUI/OpenGL対応のPC。
制作時検証: Python 3.12.14、Pyxel 2.9.9、クラウドLinux headless。
インストールにはインターネットが必要。ブラウザー版Pyxelは未検証です。

Windows（展開先のターミナル）:
py -3 --version
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe 01_walk.py
.venv\Scripts\python.exe 05_undo.py

macOS/Linux（展開先のターミナル）:
python3 --version
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python 01_walk.py
.venv/bin/python 05_undo.py

仮想環境は各PCで作り直し、他のPCからコピーしません。
既存のPyxel 2.9.9環境がある場合は、その環境のpythonで起動できます。

操作: 矢印で移動。02以降1がバネ、03以降2が帆、04以降3が靴。
S/Pへ最終着地したときだけ着脱。05のみXでUndo。Rで履歴ごと初期化、Esc終了。
全キーを離してから次を押します。押しっぱなしで連続移動はしません。
01には回収・勝敗がありません。02以降は印2個を集めGへ着地。
死亡や時間切れは原作にもありません。行き詰まったらR、05ではXを使います。

標準ライブラリだけの試験（Pyxel不要）:
python test_stages.py
python qa/simulate_cp932.py
python qa/verify_freeze.py

実Pyxelの再現試験（新しい空の出力先名を指定）:
python qa/runtime_checks.py "再検証 出力"
出力は15枚のPNGと実行ログ。初期・入力チェックポイント・単独移動コピーを描画。
50件の無効CLI検査はPyxelをimportできない -S プロセスで拒否を確認します。
新しい画像は再実行者も目視で確認してください。試験画像の目視は自動合格ではありません。
CP932試験はencoding省略時のopen/io.open/Path.read_textをCP932へ置換して失敗する対照を確認します。
PYTHONIOENCODINGだけを変更した試験ではありません。

qa/REVIEW.mdとqa/results.jsonに今回の検証範囲、qa/runtime_results.jsonに実コマンド。
qa/reference_model.pyは原作model.pyの無変更コピー。通常起動はこれを読みません。
qa/canonical_sha256.jsonは読み取り専用原作の全ファイル台帳。
FROZEN_SHA256.jsonはこの教材の自己ファイルを除く全配布ファイル台帳です。
教材を編集すると照合が失敗するのは正常です。自作変更と配布版を分けてください。

実施していないもの: 実ブラウザー操作、実Windows/macOSキーボード・IME、音声、実機GUI、人の学習評価。
原作同梱の過去のQAを今回の教材試験として数えていません。
画面はASCII英数字と図形のみで、日本語は本文にあります。
LICENSE / LICENSE.txtは原作のMIT文をそのまま保持。
assets/NOTO-LICENSE.txtも原作のまま保持。教材実行にはNoto字形を使いません。
assets/PYXEL-LICENSE.txtは依存PyxelのMIT通知です。新しい権利者表示は捏造していません。
