文系人間がプログラミングをはじめてみた。

プログラミング初心者のゼロからの勉強記録。

マクロで作ったマインスイーパーの解説 全体像編

どうもこんにちは。

 

今回からマクロで作ったマインスイーパーの解説をしていきたいと思います。

どんな感じのものになっているかはこちらからご確認ください。

programminghajimetemita.hatenablog.com

 

細かい内容の解説に入る前に、

マインスイーパーのマクロの全体的な構造と、

実際のコードをご紹介します。

 

 

1.マインスイーパーの全体像

まずはマクロの全体像からです。

マクロの処理の流れをパワポにまとめましたのでご確認ください。

細かい図なのでわかりづらいかもしれませんが、

どんな処理をしているかざっくり言うと、以下のとおりです。

 

・図の一行目(Startから初期配置の記録まで)で、
ゲーム画面のマス目に爆弾と数字を設置

・図の三行目(operationからcnt_bombまで)で、
各種操作(マス目を開いたりフラグを設置したり)と
残爆弾数と経過時間のカウントを実施

・図の四行目でゲームオーバーになったか判定
⇒ゲームオーバーであれば全マスを開いてゲーム終了

・図の五行目でゲームクリアになったか判定
⇒ゲームクリアであればゲーム終了

・四行目、五行目の判定がFalseであれば、三行目の処理を繰り返す

 

どんな処理をしているか、大体ご理解してもらえたでしょうか?

次にこれらの実際のコードを紹介していきたいと思います。

 

2.マインスイーパーのコード

では実際に記述したコードの内容をご紹介します。

以下かなりボリュームが多いです。

興味がある部分のマクロだけ参照するなどして、適宜読み飛ばしてもらえたらと思います。

 

まずはマクロ内で使用した変数や定数について紹介します。

以下で紹介するマクロにはここで定義した変数・定数が出てきますので、

適宜参照しながら内容を見てもらえればと思います。

ここから各マクロのコードの内容の紹介です。

まずはマインスイーパーのメインのマクロです。

上で紹介したもののコード版と思ってもらえればよいかと思います。

次は「難易度選択」です。

ユーザーフォームは以下のように整えました。

OKボタンに登録したコードは以下の通りです。

次は「ms_setting」です。
以下のゲーム画面になるように書式を設定するマクロになります。
(以下は難易度上級に対応するものです)

コードの内容は以下の通りです。

次は「set_bomb」です。マス目内に爆弾を設置するマクロです。

次は「set_num」です。マス目内に爆弾に対応する数字を設置するマクロです。

次は「operation」です。キーボード操作に応じてゲーム内の処理を行うマクロです。

次は空白セルを開いたときの動作を制御する「act_blank」です。

全体像の中では触れていないマクロになります。

ただ、「operation」のパーツになっているマクロですので、ここで併せて紹介しておきます。

次は空白セルを開いたときに周囲にある空白セルを登録する「rec_blank」です。

これも全体像の中では触れていないマクロですが、

上で紹介した「act_blank」のパーツになっているマクロですのでここで紹介します。

次は「cnt_time」です。経過時間をカウントするマクロです。

次は「cnt_bomb」です。残爆弾数をカウントするマクロです。

ここからは関数をご紹介します。

まずは設置した数字のフォントの色を制御する「SetNumColor」関数です。

全体像の中で触れていない関数ですが、「set_num」マクロのパーツとして働く関数になっています。

次は「CheckGameOver」です。ゲームオーバーを判定する関数です。

最後に「CheckGameClear」です。ゲームクリアを判定する関数です。

 

以上、コードの内容のご紹介でした。

次回以降、これらのコードを詳しく解説していきたいと思います。

 

3.おわりに

今回はマクロで作ったマインスイーパーの全体像についてご紹介しました。

このマクロを作るのにかかった時間は約35時間でした。

空白セルを開けたときの挙動を再現するコードを組むのがかなり難しく、

ほぼそのコードの内容を考えるのに時間を費やしました。

 

次回はゲーム画面の書式設定を行う「ms_setting」について解説します。

ではまた。