マクロで作ったマインスイーパーの解説 詳細編 爆弾の残個数をカウントする
どうもこんにちは。
今回もマクロで作ったマインスイーパーのコード解説をしていきます。
どんな感じのマインスイーパーになっているかはこちらからご確認ください。
programminghajimetemita.hatenablog.com
今回は爆弾の残個数をカウントするマクロについて解説したいと思います。
では内容に入ります。
1.コードの内容
まずはコード全体の内容をご紹介します。
2.マインスイーパーの挙動
爆弾の残個数は以下のように計算されます。
・爆弾の残個数=配置した爆弾数-フラグ設置数
なお、フラグの設置数が配置した爆弾数を上回る場合にはゼロを表示する仕様としています。
爆弾の残個数のカウントについても経過時間のカウントと同様、
3桁の数字を一つずつ別々のセルに表示するようになっています。
そのため、残個数を表示させるときに一桁ずつ別々のセルに表示させるように処理する必要があるので注意が必要です。
参考までにゲーム画面を載せておきます。
左上の赤字部分が爆弾の残個数のカウントです。
ではコードの内容解説に入ります。
3.コードの内容解説
爆弾の残個数を計算し、計算結果を変数bに登録する処理です。
2.で触れたとおり、"爆弾の残個数=初期個数-フラグ設置数"ですので、
爆弾の個数を示す変数start_bからフラグ設置数(これはCOUNTIF関数を用いてフラグアイコンになっているマスの数をカウントしています)を引いて残個数を計算しています。
残個数の計算はできたので、あとはカウンターのセルに残個数を一桁ずつ表示する処理になります。
まず、残個数が2桁数字になるとき(10個以上)です。
このとき、カウンターの真ん中の桁(十の位)は残個数の左から一番目の数字、
カウンターの右端の桁(一の位)は残個数の右から一番目の数字になるので、
それぞれLeft関数、Right関数を利用して数字を取得しています。
次に、残個数が1桁数字になるとき(1~9個)です。
このとき、十の位は常に0になりますので、値を0に設定しています。
一の位は2桁数字のときと同様、右から一番目の数字になるので、
Right関数を利用して数字を取得しています。
最後に残個数がマイナスになった場合です(フラグの設置しすぎの場合)。
2.で触れたとおりこのときは常に0を表示する仕様としましたので、
残個数を示す変数bは利用せず、値を0に設定しています。
以上でコードの内容解説を終わります。
4.特に重要なコード
今回は振り返るべき重要なコードはありませんので割愛します。
5.おわりに
今回は爆弾の残個数をカウントするマクロについて解説しました。
次回はゲームオーバーやゲームクリアを判定する関数について解説したいと思います。
ではまた。