質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

1回答

1457閲覧

VBAでマインスイーパーを作成してるのですが…

Kincri_D4C_02

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2021/07/31 11:50

編集2021/07/31 22:31

ExcelのVBAでマインスイーパーを作っています。 クリックしたマスが空白のマスの場合、周りにも空白のマスがあればそれら空白のマスを開いていくという処理をさせたいのですが、いい案が思い浮かびません。

ちなみに仕様は下記の通りです。
・ゲームのマスはExcelのセルを利用
・ダブルクリックでマスオープン、右クリックで旗を刺す(旗刺し処理はまだ未実装)
・ゲームマスの範囲は変更可能
・爆弾の設置はrandomizeでマップ範囲内のセルのアドレス値を割り振りセルに「b」という値を出力。(仮でボムのBにしてるだけです)
ちなみに爆弾を設置するセルのアドレス値は被らないようにしてあります。
・初手クリック時は爆弾を引かないようにする為に、マップ生成→ダブルクリック→爆弾設置という風にしてあります。
(クリックしたセルのアドレスがrandomizeで割り振られた場合はその値を除外するといった処理です。)
・設置された爆弾の周りに数字を出力
マップの範囲内全てのマスを順に回し、爆弾もしくは周りに爆弾がひとつも無ければスキップ、ターゲットのマスの周り8マスに爆弾があればその爆弾の数をカウントし、その数を出力する。

このような感じで自力でどうにか作成して来たのですが、隣接する空白のマスの状態を変化させるといった処理がどうしても分かりません。。
クリックしたマスに対してオフセットを使って上下左右、斜め方向に空白セルを検索し、空白であればマスをオープン、マップの端に来るか数字もしくは爆弾のマスが来れば検索終了といった処理は作ってみましたが結局網羅的に検索出来ないので使い物にはなりませんでした。

再帰処理か何かでいい案はないでしょうか?
長文になりましたが、皆様の知恵をお貸しください!

追記
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11246942791

こちらに投稿する前にヤフー知恵袋にも投稿してしまいました。
マルチポストになりますが、既に回答を書いてくださってる方もいるので削除はしないつもりです。、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kincri_D4C_02

2021/07/31 12:36

ご指摘ありがとうございます、後ほど修正致します。
jinoji

2021/08/01 15:04

斜めはオープンするんだっけ?
guest

回答1

0

VBAは知りませんが,周囲のマスをスタックなりキューなりに突っ込んで調べていくような処理で良いのでは.

…っていう話の内容をここで説明するのも面倒なので,以下のような話(指定地点から広がる範囲を求むような話)を検索してみることをお勧めします.
アルゴリズム等を説明している個所がきっと見つかるでしょう.

  • 画像の塗りつぶし処理(クリックした箇所と繋がる同じ色の範囲を塗る)とか,
  • SLGの移動可能範囲の列挙(ユニットの位置から移動力的に到達できる範囲を求む)

投稿2021/08/02 02:31

編集2021/08/02 02:35
fana

総合スコア11658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/08/02 02:34

あと,「幅優先 深さ優先 スタック キュー」とかそういう単語で検索してみると何かしら参考になる話が見つかるんじゃないかな,と.
fana

2021/08/02 02:38

> 画像の塗りつぶし処理 を調べるには,検索時に「flood fill」とか付けると良いかな?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問