017 日陰の追いかけっこ / 独立5段階教材

Python 3.11以上、Pyxel==2.9.9。制作環境で新規インストールはしていません。
利用者が環境を用意する場合: python -m pip install -r requirements.txt

python 01_movement.py
python 02_shadow_union.py
python 03_sun_burden.py
python 04_time_return.py
python 05_delivery.py

どの.pyも単独で起動できます。前段階の実行は不要です。
日本語・空白のある名前へ1ファイルだけコピーした実Pyxel起動も検証しました。
解説・演習・限界: LESSON.md。構造化した同内容: lessons.json / lesson_meta.json。

矢印: 歩く / SPACE+矢印: 走る / P: 停止 / R: 初期化 / 1,2,3: 庭選択
03以降 H: 2秒先の影 / 04以降 Z: 庇へ時刻ごと戻る / 05成功後 N: 次の庭
R・数字・Z・Nの後は方向とSPACEを離してから再開します。Esc: 終了。

検証: python -B -m unittest -v test_stages.py
原作なしで標準ライブラリの試験が走ります。原作比較5件は理由付きskip。
原作比較にはPYXEL017_ORIGINAL_DIRで原作017フォルダーを明示します。
Pyxel実描画と独立ファイル検証: python -B qa/render_check.py
凍結後の配布内容確認: python -B qa/verify_freeze.py
再描画・再テストはログを更新するため、凍結検証より先に実行するとhash不一致になります。

身体円全体の影の和集合包含を扱います。中心だけでの安全判定ではありません。
照明と拾得は120Hzの終点判定。あらゆる連続状態の保証ではありません。
実Pyxelの自動操作画像を確認済み。OS実キー・人の試遊・ブラウザ・実聴は未確認。

コードMIT: LICENSE / LICENSE.txt。各.pyにも全文収録。
Noto由来字形の原文権利表示: assets/NOTO-LICENSE.txt（実行に字形データは不要）。
