094 お祭りのあと一時間
版 094-1.0 / Pyxel + Python標準ライブラリ / 日本語UI / 通信なし

屋台をたたむと、もう一本の帰り道が見えてくる。
三つの店と三人の客がいる広場。最後の一時間を六つの10分枠で進めます。
どの灯りを残すか、誰を案内するか。売上、買物、帰り道、最後の声を並べて残します。
唯一の総合点や、隠れた善悪点はありません。

起動
Windows: Python 3を導入しsetup.batを一度実行、その後play.bat。
macOS/Linux: python3のある環境でbash setup.sh、その後bash play.sh。
requirements.txtのPyxel以外に実行時の追加パッケージは不要。
setupにはPyxel取得の通信が必要。ゲーム実行時は外部アカウントも通信も不要。
検証環境はcloud Linux。Windows/macOS実機は未検証です。

操作
表紙1/2/3でA/B/C。Bで閉店時に脇道が開く版／外周だけの比較版。
SpaceまたはEnterで開始。
Tab: 閉店、案内、待つを切替。矢印: 店や客の対象を選択。Enter: 一刻確定。
Space: 待つを選ぶ。選択だけで時間は進みません。
Z: 対象番号と同じ客の話を読む。行先は会話前から公開。Z/Xで会話を閉じる。
X: 一刻戻す。R: 同じ祭りの最初へ（確認あり）。H/P: 説明を開閉。
S/L: 現在の夕方を保存／読込。M: 表紙。Esc: 終了確認。F12: 原画面の保存。
六刻後に客が残る場合、Enterで一歩ずつ帰路を見届け、Spaceで自動再生を切替。
自動再生中もH/P、会話、確認、表紙では世界が停止。undoすると自動再生を止めます。
同時キーは無効。開始や確認に使ったキーをすべて一度離してから次の操作をします。

広場のルール
0出口、1茶前、2花火前、3橋、4面前、5舞台。初めから外周で全地点がつながっています。
茶店A閉店で0–4、面屋B閉店で1–4、花火屋C閉店で1–5の短い道が開きます。
道は屋台の脇の通路。建物を突き抜けるルールではありません。
閉店→通路追加→全客の旧位置から最短路計算→同時移動→買物/退出→営業店売上→刻更新。
通常一辺、案内を受けた人だけ二辺進み、目的地へ着くと止まります。
最短路が同じ長さなら次の地点番号が小さい道。人同士は道を塞ぎません。
客は希望の店へ寄り、その次の刻から出口へ。案内しても希望は書き換えません。
先に閉じた店へ寄りたい客は「今回は見送り」。閉店した刻に到着しても買物できません。
営業中の各店は刻の終わりに売上1。客の購入人数をさらに加算しません。
六刻後は新しい売上・閉店判断を止め、残る客の帰路だけ最大六刻で見届けます。
未閉店は清掃係が閉めます。帰宅できても「自分で三店閉める」依頼は未了です。
基本目標は自分で三店閉店＋全員帰宅。誰を最後まで残せば正解という扱いはありません。
ひとことは買物/見送り、通った脇道、退出時に直前だった閉店、案内の事実から選びます。

三つの夕方
A あと一杯のお茶: 舞台から茶店へ行くユイ、橋から面屋へ行くタク、花火前のエン。
B 舞台の帰り: 二人が舞台から歩き出し、面前から花火屋へ行く人もいます。
C 橋の向こうの三人: 雨の景色。雨による移動速度の罰や隠れた難度変更はありません。
遅くまで店を開ける、先に道を通す、遠い客を案内するなどの入力例を別々に保存しました。

保存とプライバシー
save_094.jsonに作品ID、版、状況、状態、意味入力、undo履歴、設定をUTF-8で保存。
一時ファイルを書き終えてから置換。未知版・破損は説明し、元ファイルを残します。
読めない場合はRで新規開始。個人情報の入力や外部送信はありません。
mediaには起動ごとのイベント・状態hash・その時のソースコピーを保存します。
自動テストの保存は一時フォルダのみで行い、実際の観測記録を上書きしません。

同梱資料
solution_logs.json: 三つの夕方と複数の閉め方の全意味入力・状態。
exhaustive_results.json: 合法な六刻の行動列をすべて調べた件数と結果の候補。
comparison_results.json: 閉店で道が開く一規則だけを変え、同じ六刻入力で両版の基本達成。
QA.txt / NATIVE_OBSERVATIONS.txt: 機能と実機確認の範囲。
media/automatic_...: 実Pyxel描画への自動意味入力の無音MP4・原GIF・PNG。人の試遊ではありません。
NOTE.txt / X_POSTS.txt: 未投稿の原稿候補。

ライセンスと構成
自作コード・幾何図形はMIT (LICENSE.txt)。PyxelのMIT全文: assets/PYXEL-LICENSE.txt。
日本語の最小ビットマップ文字はNoto Sans CJK由来、SIL OFL 1.1全文: assets/NOTO-LICENSE.txt。
model.pyは純粋モデル、controller.pyは入力、storage.pyは保存、app.pyは描画。
toolsの文字生成と動画変換には開発時Pillow/ffmpegを使用。ゲーム実行には不要です。
音声は意図的に使いません。音の実聴は未確認です。
機能検査やエージェント操作の記録を、人が楽しいと感じた証拠には置き換えません。
