005 ねぼすけ信号係 — Python / Pyxel 2.9.9

起動
Python 3.10以上。Windowsはsetup_windows.batを一度実行し、play_windows.bat。
macOS/Linuxは bash setup.sh の後 bash play.sh。
素材は同梱。ネット接続が必要なのはPyxelの初回インストールだけ。
音なし。音声デバイスがなくても文字と形で遊べます。

左右/A Dで車線を選び、Spaceで赤・青。両赤＋通過中の車ゼロで横断。
青の先取り予約は横断終了後に発進準備0.7秒。予約を再度押すと解除。
Pは時間停止と説明、Rは同じ列を即再開。Escは選択画面。Qは選択画面から終了。
結果のN/Enterは次の手作り状況へ。無制約ランダムはありません。

A: 昼の横断。次の空白を見て止める。
B: 列より先に人。3秒にAバス/B小型車、3.8秒に人。
   Aだけ先に止めてBを流すと、人を待たせず車の待ちを減らせる。
   バスを通して人を少し待たせる選択も安全で、車の待ちはもっと減る。
C: 2秒と4秒に人。先に渡すと人が楽、まとめると車が楽。
   荷の印は3秒かかる横断、通常は2秒。人数は組単位。

数値は最大得点に統合しません。全員通れば通常クリア。
車は1車線6台。7台目で赤い警告、その状態が0.7秒続くと詰まり。
人は表示された許容待ちを超えると終了。車や人の事故は発生しません。
到着は有限です。A/Cで全赤放置は全員を通せず未終了、Bは入口詰まり。
一律の時間切れはなく、無操作をゲーム外で強制終了しません。

開発検証
python -m unittest -v  # モデル11 + 入力分岐モック5
python experiment.py > media/experiment_final.json
python experiment.py --baseline > media/experiment_baseline.json
python app.py --demo --headless (ゲーム内22秒・ファイル19.77秒の実Pyxel自動映像を再生成)

model.pyは描画非依存の30Hz FIFO/FSM。試験と操作映像は面白さの証明ではありません。
tools/baseline_model.pyは初期交通データを残した実行可能比較用モデル。
フォントはNoto Sans CJKを12pxで必要な文字だけラスタライズ。
assets/NOTO-LICENSE.txt参照。文字を増やす場合はtools/build_font.pyを実行。
生成用PillowとNotoは通常プレイには不要。

文字コード: glyph JSON/ログ/生成ツール/試験のテキストI/OはUTF-8明示。
cp932既定の模擬、日本語＋空白パス、別cwdの起動初期化を試験済み。
Windows実機確認ではありません。端末やOSの全体設定変更は不要です。
現在の試験合計19件: モデル11、入力分岐5、文字コード/パス2、Windows起動スクリプト静的検査1。
