※本解説ではMicrosoft 365のバージョンにて解説しており、別バージョンをお使いの場合
アイコンの配置が本解説と相違があることがあります。
エクセル VBAでブロック崩しゲームをつくりました
※本ソースコードは、教科学習情報ページの宮崎県立宮崎西高等学校 溝上 俊彦教諭が作成
されたブロック崩しゲームを参考としてバージョンアップしています。
情報授業実践記録
https://www.shinko-keirin.co.jp/keirinkan/kojoho/infomation/jissen/26.html
ブロック崩しゲームを創る
エクセルシート内
サンプルソース
上のコピーボタンでコピーできます☟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
Option Explicit Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Dim bContinue As Boolean Dim vx As Single Dim vy As Single Dim dt As Single Dim x As Single Dim y As Single Dim Rk As Single Dim n As Integer Dim b_px(100) As Single Dim b_py(100) As Single Dim b_vx(100) As Single Dim b_vy(100) As Single Sub Ball() dt = Cells(9, 3) vx = Cells(6, 3) vy = Cells(6, 4) x = Cells(3, 7) y = Cells(3, 8) Rk = Cells(3, 11) bContinue = True CommandButton1.Caption = "STOP" Do Calculate x = x + vx * dt y = y + vy * dt Cells(3, 3) = x Cells(3, 4) = y Call ボールの壁反射 Call ブロック崩し Call ラケット DoEvents Loop While bContinue = True End Sub Private Sub ボールの壁反射() Select Case Cells(3, 3).Value Case Is >= 9.65 vx = -1 * vx Case Is <= 0.35 vx = -1 * vx End Select Select Case Cells(3, 4).Value Case Is >= 9.65 vy = -1 * vy Case Is <= 0.35 vy = 0 End Select End Sub Private Sub ブロック崩し() For n = 0 To 17 b_px(n) = Cells(6 + n, 7) b_py(n) = Cells(6 + n, 8) If y > b_py(n) - 0.75 And y < b_py(n) + 0.75 Then If x < b_px(n) + 0.45 And x > b_px(n) - 0.45 Then vy = -1 * vy Cells(6 + n, 8) = 12 Else End If Else End If If x > b_px(n) - 0.75 And x < b_px(n) + 0.75 Then If y < b_py(n) + 0.45 And y > b_py(n) - 0.45 Then vx = -1 * vx Cells(6 + n, 8) = 12 Else End If Else End If Next n End Sub Private Sub ラケット() If GetAsyncKeyState(70) < 0 Then Rk = Rk - 0.3 End If If GetAsyncKeyState(74) < 0 Then Rk = Rk + 0.3 End If Cells(3, 11) = Rk If Cells(3, 4) > 1.5 Then ElseIf Cells(3, 3) > Rk + 1 Then ElseIf Cells(3, 3) < Rk - 1 Then Else vy = -1 * vy End If End Sub Private Sub CommandButton1_Click() If bContinue = True Then bContinue = False CommandButton1.Caption = "START" Else Call Ball End If End Sub Private Sub CommandButton2_Click() CommandButton2.Caption = "RESET" Cells(3, 3) = Cells(3, 7) Cells(3, 4) = Cells(3, 8) For n = 0 To 8 Cells(6 + n, 8) = 9 Next n For n = 0 To 8 Cells(15 + n, 8) = 8 Next n End Sub Private Sub ScrollBar1_Change() Cells(6, 3) = ScrollBar1.Value Cells(6, 4) = ScrollBar1.Value End Sub |
エクセルシート内 作成
情報の授業として、以後説明しやすいようにエクセル内の設定を変更していきます。
VBAのコード編集のため開発タグを表示、エクセルマクロ有効にし保存
以前の記事内にて設定方法を説明させていただいているので、そちらを参照ください
マクロ有効エクセルの設定
『開発』メニュー設定
列行を数値に変更
『ファイル』を選択
メニュー最下段の『オプション』を
選択
このようにアルファベットの列が数字に置き換わりました。こちらは、セルの位置を説明しやすいよう設定するものですので不要と思われる方は設定しなくても結構です。
エクセルシート内に設定数値を入力しておく
ブロック、ボール、跳ね返しバーを作る
ゲームの画面ですが、グラフで作ってあります。
必要なブロック、ボール、ラケットの描画
ブロック、ボール、ラケットと
エクセル上で、XとYの位置を
【系列X】、【系列Y】へと範囲選択で
グラフを作っていきます。
・ブロック
系列名『ブロックの位置』が結合縦書きセルの
ため 系列名は『ブロックの位置』と自分でタイピングしましょう
【系列Xの値(X)】
右画面のように、青で囲まれたエクセルシート内を選択しましょう
【系列Yの値(Y)】
右画面のように、緑で囲まれたエクセルシート内を選択しましょう
※見えにくい場合クリックすることで拡大できます。
・ボール
次にボールを設定します。ボールやラケットを作る場合、再度 グラフ外枠を『右クリック』
『データの選択』を選びます。
右、画面のように、追加を選択して、データの範囲を選択しましょう。
【系列名】は『ブロックの位置』
右画面のように、赤で囲まれたエクセルシート内を選択しましょうを選択しましょう
【系列Xの値(X)】
右画面のように、青で囲まれたエクセルシート内を選択しましょう
【系列Yの値(Y)】
右画面のように、緑で囲まれたエクセルシート内を選択しましょう
※見えにくい場合クリックすることで拡大できます。
・ラケット
次にボールを設定します。ボールと同じように、再度 グラフ外枠を『右クリック』
『データの選択』を選びます。
【系列名】は『ラケットの位置』
右画面のように、赤で囲まれたエクセルシート内を選択しましょうを選択しましょう
【系列Xの値(X)】
右画面のように、青で囲まれたエクセルシート内を選択しましょう
【系列Yの値(Y)】
右画面のように、緑で囲まれたエクセルシート内を選択しましょう
※見えにくい場合クリックすることで拡大できます。
点のグラフを整えてブロック崩し画面を作る
左図が現時点の散布図のグラフです。右図が完成図 ブロック崩しらしく点の形を整えていきます。
(別方法)
クリック操作が苦手に思われる方は、エクセルメニューでも同じ操作ができます。
①グラフ内、ブロックの点を『右クリック』で
選択し
②メニュー『書式』を選択
※グラフを選択できていないとメニューは
出ません
③『↘』を『右クリック』することにより
データ系列の書式設定】メニュー
が右にでてきます
ブロックの設定
【マーカー】を選択すると
【>マーカーのオプション】
のメニューがあります。
【>マーカーのオプション】の
【>】マークが出た場合、メニューが折りたたんで表示されているので
『左クリック』で
展開しましょう
【マーカーのオプション】から
【組み込み】を選択し
【種類】を『■』四角に変更し
【サイズ】から作成した図表に合うよう
数字を調整しましょう
例として「30」に設定しています。
【塗りつぶし】メニューから
【塗りつぶし(単色)】選択
【色】から
色を自分の好きな色へ変更しましょう
ボールの設定
ラケットの設定
次回 プログラミング内 と ボタン制御について解説
ここまでで、エクセルで設定するパーツを説明してきました。
ここまででは、プログラムを実行してもエラーとなります
プログラムを制御するために必要な『ボタン制御』と『プログラム』内を次回説明してまいります
コメント