083 いたずら庭師
日本語 Pyxel / ローカル2人・非対称対戦 / 全公開練習も選択可

上では花壇づくり。下では大根づくり。同じ庭で、別の思惑。
庭師は入口から小道を伸ばして花へ水を足し、モグラは巣から根を伸ばす。
各役2行動、8ラウンド。モグラの手番後に連結根のある花壇から水を1吸う。
潤い2で開花。8回目の吸水後、3花壇以上が開花なら庭師、それ以外はモグラが勝つ。

Windows: Python 3.10以降を用意し setup.bat を一度実行。次から play.bat。
macOS/Linux: bash setup.sh の後 bash play.sh。実行時の外部依存はPyxelのみ。
導入時はネット接続が必要。ゲーム中の通信や外部素材取得はありません。
検証はクラウドLinux。Windows/macOS実機、実際の2人試遊、実音声は未確認。

操作
表紙: 1/2/3で庭A/B/C、Bで秘密対戦/全公開練習、Spaceで開始。
矢印: マス選択。Tab: 行動を選ぶ。Z: 仮選択。Enter: 確定。X: 仮選択取消。
庭師: 小道、水、掘り返し、待つ。モグラ: 根、待つ。
掘り返しは選んだ中心＋上下左右の十字5マス。中心が小道かその隣接なら合法。
花、小道、石、巣は壊れません。巣の根は残ります。切れた枝は灰色、連結根は黄色。
根の有無は選択予告では分かりません。掘った後だけ、切ったか空掘りか分かります。
花壇の潤い2への水やり、石や巣への小道、不連結枝からの伸長などは不可です。
交代幕: 次の役がEnter。カーソルは入口/巣へ固定し、相手の最後の選択を持ち越しません。秘密対戦では庭師は地下手番の画面を見ないでください。
1台の画面や録画・保存ファイルへのアクセスを技術的に隠すものではありません。
全公開練習は別の情報条件。秘密対戦と同じ公平性を持つとは主張しません。
H/P: 説明・停止。R: 庭師、モグラが順にEnterで同盤面の再試合。Xで取消。
結果: Spaceで役割交換して再試合、Mで表紙。Escで終了確認、Enter確定。
F12: 実画面PNG保存。キーは場面が変わったら一度すべて離してください。
操作確定後のundoはありません。秘密を見てから前の役に戻らないためです。

考え方
水を足すだけでは根が伸び切る前に対処しづらくなります。花に至る道を守る小道と、
根のつなぎ目をまとめて切れる掘り位置を考えてみてください。吸水花壇は手がかりです。
モグラは近い花を狙うほか、掘られやすい場所から別方向へ迂回できます。
最終結果では地下の全景が残ります。根の長さや形への隠し得点はありません。

設計変更と確認範囲
初候補の1マス掘りでは、素朴な庭師方策が近接/遠回りモグラへ全庭で負けました。
掘る範囲だけを十字5マスへ変更。近接伸長への庭師の対抗入力がA/B/Cで成立。
A/Cの同じ決め打ち策は遠回りモグラへ敗北。Bは両方へ勝ちました。
36組のスクリプト試合は実力分布や勝率ではありません。公平性・面白さは2人の試遊待ち。
探索器は全根を読んで候補入力を発見。実行する庭師方策は根を読まず固定座標を使います。
公正な秘密情報AIの強さ、必勝、最短、全探索済みとは表現しません。

資料
model.py 純粋状態/step、controller.py 入力と幕、app.py 描画。
experiments.py 方策、solution_logs.json 両役の勝ち列、comparison_results.json 情報表示比較。
balance_revision_results.json 掘り範囲だけ変更した技術比較。design_baseline は旧規則保存。
media/automatic_* は実Pyxel自動操作・無音。media/native_* はエージェントのnative操作。
各撮影フォルダに当時の元ソースとハッシュを保存。古い記録を新コードの実測へ置換しません。
テスト: python -m unittest discover -v。テストは映像や操作記録を書き換えません。
日本語は同梱glyphs.json。Noto Sans CJKから作成。フォント/Pyxelの全文ライセンスはassets。

確認画面のプライバシー修正: Rの双方確認と終了確認は盤面を下に描きません。
元の録画と元ソースは保存したまま、端のカーソルが透ける経路を修正しています。
