038 うそつき市場：5段階教材
Python3.11以上 / Pyxel2.9.9 / GUI・OpenGL対応PCが必要。導入時はネット接続。
ZIP全体を新しい空フォルダーへ展開。元のapp.pyへ上書きしません。
Windows: py -3 -m venv .venv
         .venv\Scripts\python.exe -m pip install -r requirements.txt
         .venv\Scripts\python.exe 01_wallet.py
macOS/Linux: python3 -m venv .venv
             .venv/bin/python -m pip install -r requirements.txt
             .venv/bin/python 01_wallet.py
01〜05でファイル名を変えて起動。各段階は単一ファイルだけでも動きます。

左右/数字1〜6で品、Zで判断、Xで見送り/取消、Fで帰宅確認、R初期化、Esc終了。毎回キーを全部離します。
01はZで即時購入。02以降は最初のZで提示、次の別押下のZで購入です。提示中は選択と帰宅をロック、Xで閉じてからF。
Undo・転売・廃棄・買戻しはありません。ゲームの架空の数値で、実際のお金は使いません。
01〜03は全品価値3/目標12。04/05は原作Bの通常ルール/目標15。表紙/停止/他面/日本語字形/音声を省いた教材です。

検査: python -B -m unittest -v test_stages.py
標準ライブラリのみで動きます。PYXEL038_ORIGINALへ原作038ディレクトリを指定した場合だけ直接比較1件を実行。未指定は明示skip。
qa/source_fixture.json.gzは原作Bの1696経済状態の代表履歴と32792遷移。提示/見送りは繰返せるため全履歴の網羅ではありません。gzipはPython標準ライブラリで読みます。
qa/results.json、qa/REVIEW.md、qa/screens、qa/logsに実行証拠。qa/verify_freeze.pyで配布SHAを照合します。
確認用: python 04_neighbors.py --headless-smoke --demo-checkpoint --screenshot 新しい画像.png
既存フォルダー内の新しい.pngだけ受け付け、既存ファイルを上書きしません。通常起動に確認オプションは不要です。

困ったら: ModuleNotFoundErrorは実行する仮想環境のPythonからpip install。画面にはGUI/OpenGLが必要。反応がなければ全キーを離すかR。MONEYは残金不足、FULLは袋満杯、SOLDは売切れ。提示をXで閉じれば別の品へ進めます。
原作の完全な画面と素材は別の原作ZIPにあります。MITコードとNoto-derived字形のOFLを混同せず、原文LICENSE.txt/同一LICENSE/assets/NOTO-LICENSE.txtを保持。本教材の描画には外部字形データを使いません。
検査はクラウドLinuxの実Pyxel描画と合成入力。実ブラウザー、OSキー入力、Windows/macOS GUI、音声実聴、人の理解度・面白さは未確認です。

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実機検証ではありません。
