見出し画像

クリアさせる気のないマインスイーパー

を最近やっている。

"Bombe"という名前のゲームで、マインスイーパを自動化して解いていくゲームだが、尋常ではなく難しい。全ステージをクリアできた人が現時点でいないらしい。

これまでプレイしてきたパズルゲームの中で一番難しいと思う。Baba is youも大概だったが、あれより難しく感じる。しかし理不尽なわけではなく面白いので、何も進捗がなくても続けてしまう。

最初のステージ

これは最初のステージだ。マインスイーパなのに六角形で、最初から爆弾があるあたりはWindows標準のマインスイーパと毛色が異なっている。

「0と書かれた青の丸」と「0-0と書かれたピンクの線」があるが、これはそれぞれ「青の1マスには爆弾が0個」「ピンクの線で繋がれた2マスには爆弾が0個」という意味を示す。

つまり、爆弾が0個なので問答無用で開けていいマスということだ。人間ならこれぐらいは自明と分かるが、Bombeは自動化をするゲームなので、「爆弾0個のときは開けていいですよ」と教えてあげる必要がある。

そういった場合、次のように自動化ルールを指定する。

自動化ルール

数字と箒の記号はそれぞれ、「2マスに爆弾0個の時は開けていい」を意味する。すると、自動的に処理が行われ、次のような盤面に変わる。

0-0の線が開かれた状態

新たに1と2-2が出てきた。マインスイーパのルールに従うと、当然1マスに1つの爆弾があれば無条件に爆弾とみなすことができるし、2マスに2つの爆弾でも同様に2マスとも爆弾とみなせる。

自動化ルールその2
自動化ルールその3

このように指定していくと、盤面に該当する条件のマスがあれば自動的に開かれていく。この動作スピードは自分で調整できるが、最高速度にすると目にも止まらぬ速さで適用されていき、条件が多くの盤面に対して効果的だったりすると一気に多くのステージがクリアされるので爽快感が味わえる。競プロでコードを提出したあと数十以上のテストケースに対して次々とACが付いていく感覚が近いと思う。

Bombeには1万以上(?)のステージがあり、様々な盤面に対して順番に全ルールの適用が行われていく。画面を眺めていると、次のような盤面で動作が止まった。

1個4マスと5個6マスの組み合わせ

「爆弾1個が4マスで、5個が6マス」なので、「全て爆弾 or 全て開けていい」の操作では位置が確定しない。そのため、これまで作成してきた自動化ルールが適用できずに処理がこの盤面で止まる。

しかし、この2つの条件を組み合わせることで次の条件を導き出すことができる。

2条件の組み合わせ

直前の盤面と見比べてほしいが、「爆弾1個の領域が2マス、爆弾5個の領域が4マス、その両方に属する領域が2マス」という意味になっている。(概念がすでに難しい)

そして、この4マスの領域に爆弾を指定してみると、チェックマークが出てきて、その4マスは爆弾であることが判明する。(整合性は自動で判定してくれる)

2条件で爆弾を指定

正直、この4マスが全て爆弾であるということはじっくり考えないと分からない。共通の2マスには爆弾1個の領域による制約で爆弾を1つしか置けないため、残りの4個を残りの4マスに置く必要がある。すなわち4マスに4個爆弾があるならそれは全て爆弾ということだ。

このルールを適用すると問題が解決され、また次の盤面が出てくる。

指定した後の状態

また2つの条件の組み合わせの盤面が出てきた。(これはどういった条件が当てはまるでしょう?)

こうして「領域nマスにm個の爆弾がある」という条件を組み合わせて網羅していき、全てのステージを自動的にクリアしていくのがBombeの目的だ。

「なんか意外と簡単そうじゃね?」と思った人は、無料のDemo版もありBombeの面白さを十分味わえるので、ぜひプレイしてみてほしい。

UI/UXはかなり分かりにくいと思うので、慣れる前に諦める人が多いと思うが、それでも慣れると面白いと言える出来になっている。プレイ感としてはプログラミングに非常に近いと思う。

複雑な問題を単純なルールに分解してコードに起こし、様々な問題に横展開し、共通項を見つけてシンプルに書き直し、不要な処理を削減して処理を高速化し、時には全く別の概念を思いついては大きく進歩する。そういったプログラミングの本質的に楽しい部分がBombeには詰まっているように感じる。

ニッチで2023年に出たゲームなのでネット上に情報は少ないが、プログラミングが好きな人には特におすすめしたい。

ちなみにSteamのストアページにも似たようなスクショがしれっと貼ってあるが、終盤にはこういうステージが出てくる。

何これ?

何これ?

この記事が気に入ったらサポートをしてみませんか?