039 見回り犬とパン屋
実装・機能検証用。人による面白さの確認は未実施。

目的：三軒へ一個ずつ届ける。パンを餌にして道を開けるか、待って残すか。
Windows：Python 3.10以上を用意し setup.bat、次回から play.bat。
macOS/Linux：sh setup.sh、sh play.sh。実行時はPyxelと標準ライブラリだけ。
app.pyの場所を基準に読むので、日本語・空白を含むフォルダ、別cwdに対応。
本フォルダだけをコピーして起動できます。launch.shは開発環境専用です。

左右で状況選択、SPACE開始。1/2/3で状況を変更。
矢印は一押し一歩。押しっぱなしでは繰り返さない。
Z：未配達の玄関では一個配達、それ以外では一個餌を置く。
SPACE：一手待つ。X：匂いの年齢と犬の状態も一手戻す。
P：停止と説明。R：同じ状況を再開。M：選択画面。成功後N：次の状況。
移動とZなど複数の行動キーを同時に押すと行動は拒否。
開始・停止解除・再開・状況変更は全操作キーを離してから再受付。

パンは閉じた箱で運ぶので、人の位置は匂いを出さない。
餌8手、配達箱6手。匂いは壁を迂回する床距離4まで。
犬は現在セルと隣の歩けるセルだけを嗅ぎ、新しさ→距離で選ぶ。
青の点付き線は「いま一手待つと」の犬の行き先。新しく餌を置くと変わる。
黄色の点は匂いの届く床。パン横の数字は残り寿命、輪は直近に選んだ匂い。
灰色の古いパンは別の店の残り。所持パンには数えない。
犬は餌を食べるか、人と重なると一個もらい、二手もぐもぐする。
食べる餌と人物が同時なら餌だけ。一手に二個は取らない。
配達箱は柵の内側で奪われない。嗅いだ箱は以後候補から外す。
配達不足ならXかR。時計による制限や待機への追加罰はない。

三状況
A：一個を角へ。餌で一手短縮するルートと、待って一個残すルート。
B：配達も新しい匂い。新しい箱へ犬の向きが変わる例がある。
C：近い古いパン、遠い新しいパン。同じ局所情報で優先順を比較。
比較版：python app.py --nearest。変更は局所候補の比較順だけ。
python -m unittest discover -v：純粋モデル＋入力と文字境界。
python experiment.py：比較結果と単純策監査（映像ログは変更しない）。
python tools/test_portability.py：cp932既定値／日本語空白パス／別cwdの模擬検査。

media/automatic：実Pyxel自動入力・無音映像。人の試遊ではない。
media/comparison：同じ入力列による比較版の独立記録。
media/native：クラウドLinuxでの実入力とスクリーンショット。
Windows実機、可聴音、人の楽しさは確認していない。音は実装していない。
日本語ビットマップはNoto Sans CJK由来。assets/NOTO-LICENSE.txtを同梱。
