035 寝ぼけた巨人 — 五段階の作り方

コードを変更する課題では、ファイルを保存し、実行中のゲームを終了してから同じ.pyを起動し直してください。Rなどのリセットはゲーム内の状態を戻す操作で、ソースファイルを読み直す操作ではありません。

必要: Python 3.11以上、Pyxel 2.9.9、GUI/OpenGL対応PC。
検証環境: Linux / Python 3.12.14 / Pyxel 2.9.9。
各NN_*.pyは素材・別教材・model.pyなしで単独実行できます。
ZIP全体を新しい空フォルダーへ展開してください。

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

macOS/Linux:
python3 --version
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python 01_walk.py

初回インストールはネット接続が必要。仮想環境は各PCで作り直します。
02以降は最後のファイル名を変更してください。各ファイルは完成した一段階です。

起動時は停止。Spaceを押し直すたび一刻。
矢印を押したままSpaceなら一刻の移動。02以降Z＋Spaceで剣を始めます。
Pを押してすべてのキーを離すと30Hzの連続運転、Pで再び停止。
矢印＋Zと斜め移動は可。左右/上下同時押しは相殺。
Rで同じ庭を初期化して停止、Esc終了。05のみ1/2/3で庭A/B/C選択。
初期化・庭変更・P切り替えのあとはすべてのキーを離してください。
Zの長押しは一振りだけ。停止中のZリリースだけでは一刻進みません。
次の刻をZなしで進めてから、新しいZ入力を試してください。

01 移動のみ、勝敗なし
02 剣の練習。敵攻撃・覚醒・腕ロックなし
03 固定予兆・覚醒・腕ロックあり。敵からのダメージだけ無効
04 原作の完成モデル。画面はAの庭
05 同じ完成モデルで三庭を選択

04/05のモデル定義は原作と構文木一致。原作の日本語画面や表紙、保存は省略。
停止中Space一刻送りは教材だけの追加です。時間制限はありません。
原作のZIPとこの教材は別。原作プロジェクトを直接書き換える教材ではありません。
LESSON.mdに本文・確認手順・失敗例・課題、lessons.jsonに同内容の構造化データ。
lesson_meta.jsonは目標・操作・相違点。diffsは隣接する完全ファイルの差分。
原作LICENSE.txtを原文保存し、LICENSEは同じバイトの別名です。
参照されるassets/NOTO-LICENSE.txtも原文保存。教材はNoto字形を描画しません。

再検査（仮想環境のPythonで実行）:
python -B test_stages.py
python -B qa/cp932_check.py
python -B qa/verify_freeze.py
python -B qa/runtime_checks.py 新しい空の出力先

test_stagesはPyxelを使わない47件。PYXEL035_ORIGINALを原作フォルダーへ設定すると
原作コピーとの追加照合を有効化。未設定時も同梱参照試験は実行し、1件だけskip。
qa/reference.jsonは原作の9勝利ルートと36本の400入力列、計22,301遷移。
全入力列・全到達状態の網羅ではありません。
qa/cp932_check.pyは実際の既定テキスト読み込みをCP932へ替える検査です。
WindowsのGUIを動かした検査ではありません。
qa/runtime_checks.pyは20回の実Pyxel起動と25件の不正CLI拒否を再現します。
headless-smoke/demo-checkpoint/screenshotは自動検査専用。
出力先は教材フォルダーの外の新規ディレクトリーにし、既存画像を上書きしません。相対保存先は起動した作業フォルダーを基準に絶対化します。
追加の勝敗・被弾・地形画像はqa/render_outcomes.pyで再現できます。
例: python -B qa/render_outcomes.py won 教材外の新規出力.png

qa/REVIEW.mdとqa/final-results.jsonに検査範囲、qa/runtimeに全画面画像があります。
画像は実Pyxel描画＋合成キー入力で、手動プレイのスクリーンショットではありません。
ブラウザー、Windows/macOS GUI、OSキー入力、音の実聴、人の学習効果/楽しさは未確認。
