042 小さな渡し船 / Python + Pyxel
定員3人の船で3港を巡る。空席で急ぐか、満員で深い道へ出るか、潮を待つかを選ぶ。

Windows: フォルダ全体を展開。Python3.10以上を入れ、setup.batを一度実行、その後play.bat。
macOS/Linux: sh setup.sh、sh play.sh。実行時はPyxel2.9.9と標準ライブラリのみ。
任意cwdから起動可能。launch.shだけは開発検証環境専用。

操作
SPACEまたはZで開始。矢印で乗客/便を選び、Zで乗降または出航。
乗降は時刻0で定員3人まで。船内の人を選ぶと今の港へ降ろす。
SPACEで港に1刻待つ。Xで前の積み替えか航行前へ完全に戻る。
Rで再開、1~3で状況切替、Pで説明/停止、Mで表紙、Bで比較変種へ切替再開。
ESCで終了。停止/航行演出中はP/R/Mだけ有効。再開後は一度キーを離す。

規則
H-AとA-Bは浅瀬1刻か深水2刻。H-Bは深水2刻だけ。
浅瀬は出発時の人数が潮の数字以下なら通れる。空船は潮0でも通れる。
深水は潮に関係なく定員まで乗れる。浅瀬は出発時だけ判定し、次の潮で罰しない。
客の出現と船の到着が同刻なら、次便へ乗せられる。
目的港に到着した客は自動降船。全員の到着で成功。希望時刻ちょうども希望内。
遅れても客は消えない。希望内人数と全員を運び終わる所要時間を別に表示。
不可能な航路・定員超過・まだいない客の選択は、所有/時間/履歴を変えない。
航行は1刻ずつ出現→到着判定を行うが、一つの意思決定としてundoする。

収録と検査
python -m unittest -v : 16のモデル/入力/全所有表示と文字枠/自動実演テスト。
python experiments.py : 著作状況の別案・各刻所有ログ・9刻までの状態探索・方策試験。
python app.py --headless --demo : 自動入力の実Pyxel描画。人の試遊ではない。
mediaはautomatic/native/comparisonを別名に分離。収録/限界はQA.txt。
比較は浅瀬の上限だけを常時3人へ変更。同じB需要・出現・希望・経路を使う。

字形はNoto Sans CJK由来。assets/NOTO-LICENSE.txtにOFL1.1を同梱。
音声なし。人による面白さ、Windows実機GUIは未確認。
