005 ねぼすけ信号係 / 5段階のPyxel教材
Python 3.11以上 / pyxel==2.9.9 / 音なし

最初に
ZIPなら新しい空フォルダーへ展開し、ZIP内から直接実行しないでください。
このフォルダーで端末を開きます。空白を含むパスは必ず引用符で囲みます。
各.pyは独立しています。原作、画像、前の段階の.pyは起動に不要です。
初回Pyxel導入だけネットが必要で、通常プレイはオフラインです。
原作個別READMEの古いPython3.10表記より、共通READMEの3.11以上を優先しています。

Windows（PowerShellまたはコマンドプロンプト）
  py -3 --version
  py -3 -m venv .venv
  .venv\Scripts\python.exe -m pip install -r requirements.txt
  .venv\Scripts\python.exe -B 01_fifo.py
確認したバージョンが3.11未満なら、Python3.11以上を用意してから仮想環境を作ります。
PowerShellの実行ポリシー変更やactivateは不要です。

macOS / Linux
  python3 --version
  python3 -m venv .venv
  .venv/bin/python -m pip install -r requirements.txt
  .venv/bin/python -B 01_fifo.py
macOSでpython3が古い場合は、3.11以上のPythonを指定して作成してください。
Linuxのvenvが使えない場合は、配布元の案内に従いPython venv機能を用意してください。

次の段階
01_fifo.py → 02_occupied.py → 03_signals.py → 04_pedestrians.py → 05_scenario.py
上の起動コマンド末尾のファイル名だけを替えます。
説明・コードの注目箇所・練習はLESSON.mdにあります。

操作
01: Spaceを1回押すと先頭を瞬時に通します（この段階だけの簡略化）。
02: 自動発進。バスの占有時間と後続の列を観察します。
03〜05: 左右またはA/Dで車線を選び、Spaceで赤・青を切替。
全段階: Pで停止/再開、Rで初期化、Escで終了。
原作と違いタイトル画面はなく、Escでプログラムを終了します。
P中は信号変更も停止。Pを戻すかRで再開します。

困ったとき
・No module named pyxel: 起動とインストールに同じ.venv内のPythonを使います。
・画面が開かない/OpenGLエラー: GUI/OpenGL対応のデスクトップが必要です。
  headless検査の成功だけでは、ご自身のPCのGUI動作を保証できません。
・ファイルが見つからない: このREADMEと.pyがあるフォルダーへcdします。
  例 Windows: cd "C:\Users\yourname\Downloads\ねぼすけ 信号"
  例 macOS/Linux: cd "/home/yourname/Downloads/ねぼすけ 信号"
  絶対パスで.pyを指定しても動きます。仮想環境を別PCへコピーしないでください。
・文字が英語: ゲーム画面は意図的にASCIIです。日本語本文はUTF-8で保存しています。
  文字化けしたらエディターの読み込みをUTF-8へ。OS全体の地域設定変更は不要です。
・02でキーが反応しない: 信号は03から。02はP/R/Escだけの観察段階です。
・04でいつまでも終わらない: 青予約を解除した車線は赤のままです。青へ戻します。
・05で失敗: Rで同じ到着表をやり直します。両赤でもバスが通過中なら人は待ちます。

検証を自分で実行（仮想環境のPythonを使用）
  python -B -m unittest -v test_stages.py
  python -B 05_scenario.py --headless-smoke --screenshot first.png --report first.json
  python -B 05_scenario.py --headless-replay qa/05_scenario_checkpoint_inputs.json --screenshot win.png --report win.json
「python」はWindowsなら.venv\Scripts\python.exe、macOS/Linuxなら.venv/bin/pythonに置換。
通常テストに原作は不要。直接比較はSLEEPY_SOURCEで原作フォルダーを指定したときだけ実行。
PNGは実Pyxel headless描画、JSON入力は合成Controller操作です。OSのキー操作試験ではありません。
headless-smokeは初期状態の描画だけでモデルを進めません。headless-replayは入力の分だけ進めます。

ライセンスと証拠
原作MIT全文はLICENSEと各.py冒頭に保持しています。権利者はTidepost contributors。
LICENSE末尾のNoto例外は原文を保存したものです。この教材にNoto字形は含めていません。
Pyxelは外部依存で独自のMITライセンスがあります。
QA.txt、qa/source_provenance.json、qa/render_results.json、qa/isolation_results.json、
qa/visual_inspection.json、FROZEN_SHA256.jsonを参照。
Linuxクラウド上で検査。人の試遊、OSキーボード、ブラウザー、Windows/macOS GUI、音声は未検証。
