ExcelのVBAでマインスイーパーを作っています。 クリックしたマスが空白のマスの場合、周りにも空白のマスがあればそれら空白のマスを開いていくという処理をさせたいのですが、いい案が思い浮かびません。
ちなみに仕様は下記の通りです。
・ゲームのマスはExcelのセルを利用
・ダブルクリックでマスオープン、右クリックで旗を刺す(旗刺し処理はまだ未実装)
・ゲームマスの範囲は変更可能
・爆弾の設置はrandomizeでマップ範囲内のセルのアドレス値を割り振りセルに「b」という値を出力。(仮でボムのBにしてるだけです)
ちなみに爆弾を設置するセルのアドレス値は被らないようにしてあります。
・初手クリック時は爆弾を引かないようにする為に、マップ生成→ダブルクリック→爆弾設置という風にしてあります。
(クリックしたセルのアドレスがrandomizeで割り振られた場合はその値を除外するといった処理です。)
・設置された爆弾の周りに数字を出力
マップの範囲内全てのマスを順に回し、爆弾もしくは周りに爆弾がひとつも無ければスキップ、ターゲットのマスの周り8マスに爆弾があればその爆弾の数をカウントし、その数を出力する。
このような感じで自力でどうにか作成して来たのですが、隣接する空白のマスの状態を変化させるといった処理がどうしても分かりません。。
クリックしたマスに対してオフセットを使って上下左右、斜め方向に空白セルを検索し、空白であればマスをオープン、マップの端に来るか数字もしくは爆弾のマスが来れば検索終了といった処理は作ってみましたが結局網羅的に検索出来ないので使い物にはなりませんでした。
再帰処理か何かでいい案はないでしょうか?
長文になりましたが、皆様の知恵をお貸しください!
追記
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11246942791
こちらに投稿する前にヤフー知恵袋にも投稿してしまいました。
マルチポストになりますが、既に回答を書いてくださってる方もいるので削除はしないつもりです。、