エクセル VBA excel vba コード 独学 学習 ブロック崩しゲーム プログラム解説 1

プログラミング学習

※本解説ではMicrosoft 365のバージョンにて解説しており、別バージョンをお使いの場合
アイコンの配置が本解説と相違があることがあります。

エクセル VBAでブロック崩しゲーム

※本ソースコードは、教科学習情報ページの宮崎県立宮崎西高等学校 溝上 俊彦教諭が作成
 されたブロック崩しゲームを参考としてバージョンアップしています。

情報授業実践記録
ブロック崩しゲームを創る

https://www.shinko-keirin.co.jp/keirinkan/kojoho/infomation/jissen/26.html

前回が表 とすれば 今回は裏側の設計

もし、『開発ボタン』、『マクロ有効』等の準備ができていなければ過去記事をご参考ください。

プログラムが動く合図をするボタンを作成する

図1

ボタンの配置

CommandButton1設置

クリックにて拡大できます

メニュー内

①『開発』→②『挿入

→③ActiveXコントロール内の『ボタン』を選択

十字『✚』ポインタに変わります

上図1を参考にボタンを作りましょう

CommandButton2設置

上と同様に2つ目のボタンを設置しましょう

ScrollBar1 設置

クリックにて拡大できます

メニュー内

①『開発』→②『挿入

→③ActiveXコントロール内の『スクロールボタン』を選択

十字『✚』ポインタに変わります

上図1を参考にボタンを作りましょう

クリックにて拡大できます

スクロールボタンを作り

メニュー内

①『開発』→②『プロパティ』を選択

クリックにて拡大できます

Max』を【5】

Min』を【1】に変更します

プログラムの説明

プログラムは前回の記事を参考にされてください。コピーで使用可能です。

クリックにて拡大できます

今回は、Sheet1にプログラムを作成し

動作させています。

プログラムを見る前に

プログラミングでまず、なにを知るべきか プログラムを読めるようになるには

(プロシージャ)procedure を理解する必要があります。

(プロシージャ)procedure とは

Sub プロシージャの名前( )

End Sub までの ひとまとめ

パーツの事をプロシージャと呼びます。

車であれば、ドアやタイヤ、エンジン

とパーツが分かれているようにイメージすると理解しやすいです

区切りを判断できて、理解できるようにがまず一歩です

キーボードから入力取得

クリックにて拡大できます

Option Explicit

は【変数】を宣言することチェックするための

チェック機能をしています。

便利な機能です。

キー入力を判定するにはWindows APIの、GetAsyncKeyState を使用します。

ByVal は値を渡す宣言です。 【vkey】という値を入れる箱を Longという型で宣言し

Long型が扱える数字の範囲は、-2,147,483,648 ~ +2,147,483,647 です。

キーボードから入力されたキーの決められた番号を Integer型で宣言して 値を渡しています。

Integer型が扱える数字の範囲は、-32,768 ~ +32,767 です。

プログラム上で、扱える範囲を超える数値を渡してしまうと、オーバーフローエラーになってしまう

ので、文字なのか数字なのかの種類、何桁、少数はあるのかなど、正しいデータ型を選びましょう。

変数宣言

変数宣言は 【箱】作り

型を決めた、変数(値を入れる箱)を用意していきます。

関係性のある変数名を付けることが一般的です。

bContinue は boolean型 (正しいか違うか、真/偽をいれる型 

vz ~ Rk はSingle型 単精度浮動小数点型

n は Integer型 

b_px(100) ~ b_vy(100) は静的配列の

宣言で Dim 変数名(要素数) As 型名

要素数は 100ですので 

b_pxa(100) の変数宣言は 左図のような

0から100までの横並びの箱部屋を作っていく

イメージをしましょう。

配列の考え方は、処理を早くしたり、複雑なプログラムをすっきりするために重要ですので理解しておきましょう。

Sub ball 部

クリックにて拡大できます

 dt など 変数(箱)にセルの数字を代入しています。左図のセルと比較しながら見ていきましょう

dtには Cell(9,3) 9行目(↓上から数えて9番目)、3列目(→左から数えて3番目)
 0.1が dtの中に入ります。

それぞれ、どの位置のセルの値がどの変数に入るか、考えてみましょう。

bContinue には True(真)が入ります。

CommandButton1.Caption とは ボタンに表示させる文字の代入です。 ”STOP”が入ります。

繰り返し文 Do while

プログラムを考える際に重要な

繰り返しの処理です。

終わる条件 が満たされるまで 繰り返します。

Calculate はプログラム内の再計算をする処理です。

x = x +vx × dt

y = x +vy × dt 計算したx,yを

Cell(3,3) へ x を Cell(3,4)へ y を代入します。

Call文で 「ボールの壁反射」、「ブロック崩し」、「ラケット」のプロシージャを呼び出し

実行します。

DoEventsは、

実行中のマクロを一時的にExcelにキー操作やマウスクリックなどのオペレーションシステムの

メッセージ処理をする機会を与えるための命令です。

ループを抜ける条件は ”bContinue”にTrueになれば、終了します。

Sub ボールの壁反射

クリックにて拡大できます

Select Case 条件処理

Select Case の条件処理です。

指定した変数の値が 条件にあう場合

処理をします。

今回は まず Cells(3,3)ボールX軸の位置の値が

Case Is 0.95以上の場合

 -1 を vxにかけて vx に入れる

Case Is 0.35以下の場合

 -1 を vxにかけて vx に入れる

vxはボールの進む速さ(ボールの進む向きでもある) ”-1”をかけることで 逆側へと進みだす。

Y軸も同様に考えることができる。

ソース解説 次回

ブロックが実際に消えるための処理

ラケットで跳ね返す処理

コマンドボタンの処理 を解説いたします。

コメント

タイトルとURLをコピーしました