Pyxel制作メモ023：大きな庭より、育つ組合せ。「一筆の庭」

一本のひもで昼の庭を囲むゲームを作りました。
日花は輪の中で、月花は輪の外で咲きます。
矢印で線を伸ばし、始点へ戻って閉じ、必要な本数が咲いたら提出。ルールはこの少なさに絞っています。

この作品で考えてほしいのは、庭をどれだけ広げるかよりも、どの花を日向にして、どの花を月あかりに残すかです。
３面目で４つの日花を大きな長方形に収めると、真ん中の月花まで中に入ります。咲くのは４本。
同じ14辺のひもをL字に引き直すと、面積は12セルから６セルへ減る一方、日花３本と月花２本の計５本が咲きます。
広く囲めたこと自体を失敗にしたいわけではありません。花の好みを読んだ結果が、そのまま成功条件になるようにしました。

小さい解を禁止しない
最初の庭は１セルを囲む４辺で解けます。２面目も、縦２セルの細い輪で必要な５本が咲きます。
この短い答えを抜け道として塞ぐと、考えて見つけた安全な解を罰してしまいます。そのまま採用しました。
２面目でもっと試したい人は、上側をつなぐくぼんだ輪で全６本を咲かせられます。これは任意の目標です。
面積、残りのひも、開花数を混ぜた合成点は作っていません。

内と外をどう決めたか
表示の線と判定の線を同じ頂点列から作っています。
閉じた線の辺を壁にして、盤面の外からセルをたどり、外から届かない場所を内側にしました。
始点以外で同じ点を通らせないので、交差や複数の輪の解釈を覚える必要はありません。
Zで最後の辺を戻せます。提出して不足していても、描いた輪は残ります。

一つだけ替える比較
３面目の花配置、ひも16辺、必要５本を固定し、「月花も中で咲く」実験基準と「月花だけ外で咲く」通常版を比べました。
大長方形は基準では６本、通常版では４本。L字は基準では３本、通常版では５本です。
どちらのルールも解ける配置で、月花の好みだけが形を選ぶ理由を変えています。
この基準は比較のために作ったもので、過去の失敗作や、人の好みを測ったA/B試験ではありません。

確認できたこと、まだ分からないこと
小盤面の単純閉路をひもの予算まで全列挙し、内側セル集合で重複を除きました。
１面711、２面3,072、３面24,411領域。２面の最大開花は６本、３面は５本でした。
列挙側のレイ交差判定と、ゲーム側のflood-fill判定を解の頂点列で照合しています。
クラウドLinuxの実画面で３面を操作し、成功、戻し、停止、長押しなども確認しました。
同封した約26秒の映像は実Pyxel描画への自動入力で、無音です。

ここまでは機能と設計の検査です。初見で花の理由を読めるか、別の形も試したくなるかは、人による試遊待ちです。
試遊では「なぜその花を外にした？」「大きく囲むのをやめた場所は？」「別の形も試したい？」を聞きたいと思います。
