040 まねっこ決闘：5段階教材

必要: Python3.11以上、Pyxel2.9.9、GUI/OpenGL対応PC。導入時のみネットが必要。
ZIP全体を新しい空の場所へ展開。仮想環境は各PCで作り直します。
Windows: py -3 -m venv .venv
         .venv\Scripts\python.exe -m pip install -r requirements.txt
         .venv\Scripts\python.exe 01_cards.py
macOS/Linux: python3 -m venv .venv
             .venv/bin/python -m pip install -r requirements.txt
             .venv/bin/python 01_cards.py
01から05へ進み、同じフォルダーでファイル名だけ変えて起動します。
各stage.pyは単独で動く教材です。原作app.pyをこれで上書きしないでください。

左右/数字は選択、Zは使用。毎操作でキーを離します。R初期化、05のみX Undo、Esc終了。
01: 小技だけの練習。02: 気力・五種の札、守りなし。
03: 原作Bの手帖を固定した比較。04: 原作Bの通常学習。05: 状態全体をUndo。
数字キーの役割は原作の面切替と異なります。教材は面Bのみ、日本語字形・音声・表紙・停止・ファイル保存はありません。
高性能な機械学習や個人の過去プレイ記憶ではなく、公開された攻撃方向の回数集計です。

テスト: python -B -m unittest -v test_stages.py
標準ライブラリだけで動きます。PYXEL040_ORIGINALに原作040フォルダーを指定した場合のみ追加の直接比較を実行。未指定なら任意の1件をskipします。
qa/source_fixture.jsonは変更していない原作Bの有限到達グラフから作った照合データ。原作モデルSHA付きです。
通常185状態/1295遷移、固定178状態/1246遷移。カード候補-1〜5を各状態で比較。無限の操作履歴や任意改造面を網羅しません。
qa/results.json、qa/screens、qa/logsに今回の実行範囲を記録。qa/verify_freeze.pyで配布のバイトを確認できます。

ヘッドレス確認: python 04_learning.py --headless-smoke --demo-checkpoint --screenshot 新しい画像.png
スクリーンショット先は既存フォルダー内の新しい.pngのみ。既存ファイルを上書きしません。普段の起動にオプションは不要です。

エラー: ModuleNotFoundErrorなら実行と同じ仮想環境のPythonでpip install。画面が出ない時はGUI/OpenGL環境が必要です。反応がなければ複数キーを全て離すかR。ENERGYは気力不足、EMPTYは札切れ、ENDは結果後です。
ASCII画面と日本語本文を対にしています。実ブラウザー、Windows/macOS実機、OSキー入力、音声実聴、初学者の理解・面白さは未確認です。クラウドLinuxの実Pyxel描画と合成入力を使った確認です。

権利: 原作LICENSE.txtと同一LICENSE、参照するassets/NOTO-LICENSE.txtを保持。教材は標準の文字/図形だけでNoto字形データは同梱しません。MITは原作の許諾に基づき、別ライセンスをMITへ変更していません。

CLI出力先の互換修正（既存教材の最小修正版）:
--screenshot の相対パスは、コマンドを実行した作業ディレクトリを基準にします。
教材ファイルを別のフォルダーへ移動・改名しても同じです。既存フォルダー内の新しい.pngを検証してから絶対パスへ変換し、Pyxelを読み込みます。絶対パス指定と既存ファイルの上書き拒否は維持しています。
ゲームの状態・操作・描画・ルール・学習例は変更していません。修正は各段階のCLI末尾の1行だけです。
再現: python -B qa/relative_output_check.py 新しい確認先
別々の日本語・空白入りフォルダーから単独ファイルを起動し、相対/絶対出力と上書き拒否を検査します。
追加記録はqa/compat_cli/。従来のqa/results.json・画像・ログは当時の記録として保持しています。
CP932省略時読込の強化検査: python -B qa/compat_cli/simulate_cp932_default.py
これはクラウドLinux上の読込既定値の模擬で、Windows実機検証ではありません。
