065 まばたき劇場：学習用5ステップ

必要：Python 3.11以上、Pyxel 2.9.9。画面を開くにはGUI/OpenGL対応PCが必要です。
画面はASCII・図形のみ、無音。Notoや追加素材は不要です。
このREADME、requirements.txt、5本の.pyが入るZIPルートを全展開し、
そのフォルダーをターミナルの作業場所にしてください。以下は全てZIPルートからの相対コマンドです。
仮想環境の作成は1回だけ。初回のpip installにはネット接続が必要です。

Windows（PowerShell/cmd）:
py -3 --version
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe -B 01_gaze.py
.venv\Scripts\python.exe -B 02_bridge.py
.venv\Scripts\python.exe -B 03_forecast.py
.venv\Scripts\python.exe -B 04_optional_star.py
.venv\Scripts\python.exe -B 05_undo.py

macOS/Linux:
python3 --version
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python -B 01_gaze.py
.venv/bin/python -B 02_bridge.py
.venv/bin/python -B 03_forecast.py
.venv/bin/python -B 04_optional_star.py
.venv/bin/python -B 05_undo.py

--versionの表示が3.11以上であることを確認してください。
01→05の順に1本ずつ起動し、前の画面をEscで閉じて次へ進みます。
前の段階を実行済みでなくても、各.pyは単独で起動できます。
reference/はテスト用の原作model.pyの未変更コピーです。ゲームの起動には使いません。

操作:
左右: 視線をDOLL（人形）/BRIDGE（橋）/LIGHT（灯り）へ循環
Z: 1回まばたき / R: 最初へ / X: 1回戻す（05のみ） / Esc: 終了
同じキーを繰り返す時は、1回ごとに離してください。押しっぱなしでは連続しません。
視線選択だけでは時間は進まず、実時間の制限もありません。

最終版の解（Rで初期化してから、各視線でZを1回。選択の移動は手数に含めない）:
基本成功: BRIDGE, BRIDGE, BRIDGE, BRIDGE, BRIDGE（5回、星なし）
星も獲得: BRIDGE, BRIDGE, DOLL, DOLL, LIGHT, LIGHT, BRIDGE（7回）
視線番号はDOLL=0、BRIDGE=1、LIGHT=2です。
初期DOLLから右でBRIDGE。BRIDGEから左でDOLL、DOLLから左でLIGHT、LIGHTから左でBRIDGE。
05のXは星・橋・灯り・視線・手数も戻します。CLEAR後も使えます。

原作との対応:
原作065-B-v1「二度渡る舞台」を採用。位置0→5、橋の出発位置1/3、星2、
初期橋2/灯り2、点灯位相1を保持します。01だけ橋を省略し、01〜03は星を省略。
04/05はこの1人の舞台のadvanceと同値です。05はblink/gaze/undo/resetも同値です。
原作のA/C、複数人形、比較モード、記録出力、演目選択、説明/停止、予告切替は省略。
詳しい日本語解説はLESSON.md、各段階の内容はlessons.jsonです。

テスト（ゲーム画面もPyxelも不要な純粋モデル＋入力処理＋明示したstub試験）:
Windows: .venv\Scripts\python.exe -B -m unittest -v test_stages.py
macOS/Linux: .venv/bin/python -B -m unittest -v test_stages.py

実Pyxelの12フレーム描画（これは人間のプレイテストではありません）:
Windows: .venv\Scripts\python.exe -B 05_undo.py --headless-smoke --screenshot qa\05_undo.png
macOS/Linux: .venv/bin/python -B 05_undo.py --headless-smoke --screenshot qa/05_undo.png
01〜04も同じオプションに対応。--headless-smoke12framesも同じ意味の別名です。
--screenshotは--headless-smokeと組み合わせて使います。
qa/QA.txtに実施範囲と未検証項目を記録しています。

コードと図形はMIT。LICENSEと各.py内の原作全文権利表記を残してください。
原作権利表記のNoto例外は原作の字形用です。この教材にNotoデータはありません。
Pyxelのライセンスは別途適用されます。Windows/macOS実機、人間の操作、音声出力は未検証です。
