ChatGPTと作ったソリティアを置いてみた。好きにいじってください。~ソリティア設計①~
はじめに
Google Playでダウンロードしたソリティア、なんかどうも気に入らない。
・広告が多すぎる
・使い方が分かりにくい(余計なUIが多い)
・終わった後の“びよんびよん”演出がちょっと邪魔
・難易度やモードが多すぎる
時間つぶしで、シンプルに遊べればいいだけなんだけど、「シンプル」がなかなか見つからない。
ChatGPTに聞いたら「HTML + JavaScriptの1ファイルで作れるよ」と言われた。
文句言ったらいいものが出てくるわけでもないので、とりあえず一緒に作ってみることにした。
作ったもの
HTML + JavaScriptで、最低限動くソリティア。
- 1枚めくり
- 山札は再利用あり
- ヒントあり
ローカルでもそのまま動く。
設計で決めたこと(重要)
詰み検知よりも、「必ず解ける配りを生成する」方が大変らしい。
なので今回は、そっちはやらないことにした。
代わりに、
- 行き詰まったら「この配りダメでした」と出す
- 新しいゲームをやり直す
という形にしている。
いわば「解ける保証を事前に持たない」設計。
システムを作るときは、「どこまでを許容するか」というのは重要な判断になる。
今回は自分用なので、
- 動かないならそれでOK
- ただし「動かなかった」という報告は出す
という、いわば“報連相で回す”形にしている。
とりあえず動かしてみる
プレイしていると、ヒントが変。
例えば:
→ ヒントクリック
→「列2 → 列4 に移動できます」
→ 実行する
→ ヒントクリック
→ 「列4 → 列2 に移動できます」
このループが発生する。
これはバグではない
ヒントは「移動できるものを表示する」
つまり、この挙動は、ルール的には正しい。
ただし、盤面としては何も進んでいないし、永遠に終わらない。
市販のソリティアとの違い
市販のソリティアは、この手の動きをあまり見せない。
たぶん、こんなコードを組み込んでいるんだろう。
- 意味のある手だけヒントに出す
- 進展しない操作は誘導しない
あえてこの状態で残した
「解ける保証は持たない」という設計にしているので、挙動もそのままにしている。
・無意味な手もそのまま出る
・詰みもそのまま出る(ただし報告は出す)
隠すこともできるが、今回はそこはやっていない。
盤面の動きは、そのまま見える。
コードはGitHubに置いてあります。
ローカルに落として、HTMLを開けばそのまま動きます。
触れるポイント
このコードは、そのまま調整できるようにしてある。
- UIの派手な演出(いわゆる“びよんびよん”)は入れていない
- 行き詰まった場合は「ごめん!配りに失敗した可能性があります。新しいゲームを試してください」とそのまま報告する。
- 難易度調整や細かな設定もあえて用意していない。
つまり、"最低限のルールだけで動く状態"になっている。
例えばこんなところいじってもいいとおもう。:
- ヒントロジック(findHint)を賢くする
- 無意味な往復を禁止する
- 詰み判定を強化する
- 山札のルールを変える
おわりに
ヒントを賢くしてもいいし、
逆にもっと雑にしてもいい。
ゲームって、その人の「どこまで許容できるか」が一番出るものだと思う。
自分でいじってもいいし、ChatGPTやClaude、Geminiなど、普段使っている生成AIに直させてみてもいい。
好きなようにいじってみてください。
追記
今気になっている点
- Undoができない。特に、一回右上に詰んだカードを戻せない
- 非表示カードが無くなったら、自動で右上に詰むボタンが欲しい
- 右上に詰めるカードが表示されている場合、自動で詰むボタンが欲しい
- 終わったら、「終了しました」とか言って欲しい
「いつでも直せる」と思っていると、
機能不足も含めて、そのまま遊べることに気がついた。
次回記事
Discussion
リンクならこれでは……?
そのリンクだと 404 になっていませんか?
すみませんー。ありがとうございます。修正しました!