025 折りたたみ駅 / 5段階の日本語Pyxel教材

必要: Python 3.11以上、Pyxel 2.9.9、通常プレイにはGUI表示環境。
画面はASCIIのみ。説明はLESSON.md。各.pyは単独実行でき、外部素材や他の段階、原作フォルダーを読みません。配布時はLICENSEとassetsの両権利文書も残してください。

Windows PowerShell（教材フォルダーへ移動して実行）
  cd "C:\教材の場所\025_folding_station"
  py -3.11 -m venv .venv
  .\.venv\Scripts\python.exe -m pip install -r requirements.txt
  .\.venv\Scripts\python.exe -B 01_map.py
  .\.venv\Scripts\python.exe -B 05_puzzle.py
Python 3.12以上を使う場合は最初のpy -3.11をその版に合わせてください。

macOS / Linux（python3 --versionで3.11以上を確認）
  cd "/教材の場所/025_folding_station"
  python3 -m venv .venv
  .venv/bin/python -m pip install -r requirements.txt
  .venv/bin/python -B 01_map.py
  .venv/bin/python -B 05_puzzle.py
仮想環境のactivateは不要。必ずこの.venvのpythonとpipを使用します。
別の作業フォルダーからも、Pythonとスクリプトの両方を引用符付きフルパスで指定すれば実行できます。

5本の順序
  01_map.py         元の駅と印刷線路（参照のみ）
  02_reflection.py  V/Hの反射（乗車・運休は未導入）
  03_transfer.py    重なった別IDへ明示的な乗換（線路は未導入）
  04_suspension.py  印刷線路と運休（成功・Undoは未導入）
  05_puzzle.py      原作Bの完成パズル（成功・Undo・リセット）

操作
01/02: 矢印で調べる駅。02以降: X=V、C=Hの折り/開き。
03〜05: 矢印で行先選択、Spaceで確定。折り/移動後に行先選択を解除。
全段階: R=初期化、Escape=終了。05のみZ=Undo、成功後もZ/R可。
操作キーは毎回すべて離してください。同時押しは拒否し、片方だけ離しても受付を再開しません。Rを含む同時押しも拒否。R単独を押した後も全解放が必要です。

検証（ここからは任意。OSに応じてpythonを上記.venvのpythonへ置き換える）
  python -B -m unittest -v test_stages.py
  python -B tools/render_qa.py
  python -B tools/check_freeze.py
純粋モデル/Controllerのテストは標準ライブラリのみ。render_qa.pyはPyxelを使います。freeze確認は配布時点の全ファイルが同じかを調べます。再描画でQAの記録を更新した場合、freezeの差異は正常です。
任意の原作直接比較（元ゲームが手元にある場合のみ）:
  python -B tools/verify_original.py "/原作の場所/025_folding_station"
元のソースを読むだけです。通常起動・通常テストに原作は不要。比較はBのみ。

単体の実Pyxel headless例（合成入力。OSキーイベントではない）
  python -B 05_puzzle.py --headless-replay XTSXTSCTSC --screenshot complete.png --report complete.json
入力符号: X=X、C=C、T=右、L=左、U=上、D=下、S=Space、Z=Undo、R=Reset。
出力の相対パスは起動した作業フォルダー基準。JSONは明示的なUTF-8。

よくあるエラー
- No module named pyxel: 実行している.venvのpython -m pipでrequirements.txtを入れてください。
- Pythonの構文/型注釈エラー: Python 3.11以上かを確認します。
- venvを作れないLinux: OS提供のPython venvサポートを利用可能にしてから再実行します。
- 画面が開かない/ディスプレー初期化エラー: GUI環境を確認。--headless-smokeは描画の技術確認ですが、通常ウィンドウの代わりのプレイ手段ではありません。
- 入力が反応しない: 操作キーを全て離し、ウィンドウにフォーカスを戻す。03以降のSpaceには先に矢印の行先選択が必要です。
- 保存先のエラー: 書き込み可能な既存フォルダーを指定してください。相対出力は作業フォルダー基準です。
- 文字化け: 文書/JSONをUTF-8として開いてください。ゲーム画面には日本語字形はありません。

検証限界
実Pyxel headless、合成Controller入力、単独ファイルの日本語/空白パス・別CWDを確認。人間の試遊、OS入力、Windows/macOS GUI、ブラウザ、音声は未検証。新たなインストールや公開投稿は行っていません。原作テスト26件・デモは教材テスト数とは別扱い。

権利
LICENSEは原作LICENSE.txtと同じ。assets/NOTO-LICENSE.txtとassets/DEJAVU-LICENSE.txtも原文のまま。字形データは非同梱です。詳細はLESSON.mdとqa/provenance.json。
