097 鏡の国の小競り合い

強い装備を拾った瞬間、敵も同じ装備を使いはじめる。先に立つ場所を変える、拾わず旗を守る、二人で集中攻撃する。６×５の盤面で、次の敵フェーズを読んで選ぶ短い戦術ゲームです。

起動
Windows: Python 3 を公式サイトから導入後 setup.bat を一度実行し、play.bat。
macOS/Linux: Python 3 と仮想環境が必要。sh setup.sh、その後 sh play.sh。
同梱 launch.sh は制作者のクラウドLinux検証専用です。通常は play.sh / play.bat を使います。
実行時依存は Pyxel 2.9.9＋Python標準ライブラリのみ。日本語字形は同梱。

操作
表紙の 1/2/3 で A/B/C、B で一変更比較、SPACE で開始。
←→ または Tab で味方、↑↓ で行動を選ぶ。Enter で確定。
T:移動可能範囲／現在射線／装備後射線。白は味方、赤は敵。文字でも状態を表示。
X:１行動前へ（敵フェーズも戻る）。R:同配置やり直し。H/P:説明と停止。
S:ローカル保存、L:読込。M:表紙、Esc:終了。確認はEnter、取消はX。
F12:media内の今回の記録フォルダへ画面PNGを保存。すべてのキーは一度離してから次の操作。

ルール
味方２体へ計２行動、敵はID順に各１行動。HP３。通常の攻撃は縦横隣接１ダメージ。
装備:長槍は縦横距離２まで（途中の壁と生存駒に遮られる）。重槌は隣接２ダメージ。斜め刃は斜め隣接も可（角の両側が壁なら不可）。各配置に１種類、取得１行動。HPは回復しません。
敵は攻撃可能なら低HP→低ID。攻撃不能なら経路距離→低HP→低IDで相手を決め、同距離の経路は上→左→下→右。移動後の追加攻撃なし。
右側予告は「選択行動のあと、残り味方行動を待つ」場合です。別の２行動目を選べば予告も変わります。
基本目標は敵２体撃破、または旗上の生存味方が敵フェーズを２回連続で終える。旗が空けば連続数０。全滅で失敗、１０敵フェーズで引分け。終わってからX/Rで試せます。

比較
通常は両軍強化、比較は味方だけ強化。ほかの地形・HP・装備・目標は共通。
A/B/Cの同じ装備なし入力を両版で実行し、基本目標への共通到達を保存。比較は公開旧版ではありません。

記録と検証
save_097.jsonは作品ID・版・配置・状態・履歴・設定を含むJSON。正常に書き終えてから置換。未知版・破損は状態を上書きせず説明し、Rで新規開始できます。
media/native_* はエージェントによる実際のクラウドLinuxネイティブ操作、automatic_* は実Pyxelへ自動入力した無音デモ。人の試遊とは区別します。
全ソース、モデル/UIテスト、方策例、一変更比較、実画像と動画、QA、NOTE/X原稿を同梱。
通常起動はcapture_sec=0、デモだけ30秒。動画は元GIF全フレームを順番どおり１回ずつ30fpsへ変換。
Windows/macOS実機、音の実聴、人による面白さ、５〜１０分の所要時間は未確認です。
音を必要とするルールはなく、この版は無音です。

ライセンス
独自コード・図形は LICENSE.txt。Pyxel全文ライセンスはassets/PYXEL-LICENSE.txt。
日本語字形はNoto Sans CJK由来、SIL Open Font License全文はassets/NOTO-LICENSE.txt。
フォント再生成用tools/build_font.pyだけは開発用PillowとNotoフォントが必要。プレイには不要。
