Excel VBA 質問スレッド №900 (解決済)
ブロック崩しを作りたい
投稿者 : さびっち 投稿日時 : 2022/07/25(Mon) 20:12:12 OS : 未指定 EXCEL : 未指定
VBAでブロック崩しを作りたいです。バーに当たって反射する方法がわかりません。また、ブロックを消すプログラムを知りたいです。
わかる方よろしくお願いします。
Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vkey As Long) As Long
VBAでブロック崩しを作りたいです。バーに当たって反射する方法がわかりません。また、ブロックを消すプログラムを知りたいです。
わかる方よろしくお願いします。
Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vkey As Long) As Long
Option Explicit Dim dt '時間間隔 Dim x 'ボール位置:X座標 Dim y 'ボール位置:Y座標 Dim vx 'ボール速度:X方向 Dim vy 'ボール速度:Y方向 Dim b 'バー中央位置 Sub Ball() dt = Cells(9, 3) vx = Cells(5, 3) '初期速度get vy = Cells(5, 4) x = Cells(2, 3) '初期位置get y = Cells(2, 4) b = Cells(3, 6) Do x = x + vx * dt '位置計算 y = y + vy * dt Cells(3, 3) = x '位置更新 Cells(3, 4) = y Call bar Call ref Call Bref Cells(6, 3) = vx '速度更新 Cells(6, 4) = vy DoEvents '操作権get&グラフ描写 Loop End Sub Private Sub bar() If GetAsyncKeyState(37) Then b = b - 0.3 End If If GetAsyncKeyState(39) Then b = b + 0.3 End If Cells(3, 6) = b End Sub Private Sub ref() Dim i If (x + dt * vx) >= 9.9 Or (x + dt * vx) <= 0.1 Then vx = -vx End If If (y + dt * vy) >= 9.9 Or (y + dt * vy) <= 0.1 Then vy = -vy End If For i = 12 To 15 If x + vx + dt >= Cells(3, 6) - 1 And x + vx * dt <= Cells(3, 6) + 1 Then If y >= Cells(i, 4) - 0.6 And y <= Cells(i, 4) + 0.6 Then vy = -vy End If End If If y + vy + dt >= Cells(3, 6) - 1 And y + vy * dt <= Cells(3, 6) + 1 Then If x >= Cells(i, 3) - 0.6 And x <= Cells(i, 3) + 0.6 Then vy = -vy End If End If Next End Sub Private Sub Bref() Dim i Dim j j = Cells(Rows.Count, 3).End(xlUp).Row For i = 12 To j If (x + vx * dt) >= Cells(i, 3) - 0.6 And (x + vx * dt) <= Cells(i, 3) + 0.6 Then If y >= Cells(i, 4) - 0.6 And y <= Cells(i, 4) + 0.6 Then vx = -vx Cells(i, 3) = 20 + Cells(i, 3) End If End If If (y + vy * dt) >= Cells(i, 4) - 0.6 And (y + vy * dt) <= Cells(i, 4) + 0.6 Then If y >= Cells(i, 3) - 0.6 And y <= Cells(i, 3) + 0.6 Then vy = -vy Cells(i, 3) = 20 + Cells(i, 3) End If End If Next End Sub
スポンサーリンク
[返信 1] Re : ブロック崩しを作りたい
投稿者 : anonymous 投稿日時 : 2022/07/25(Mon) 22:30:18
ネット上で"VBA ブロック崩し"などと検索したら参考記事があるようだ。例えば、
https://www.shinko-keirin.co.jp/keirinkan/kojoho/infomation/jissen/26.html
まったく同一の質問を繰り返すのはいかがなものか。
趣味のコード作成だろうから、他人に聞くような性質のものではないのではないか、
というのがコメントが付かなかった理由だろうと思う。自分で研究してください。
ネット上で"VBA ブロック崩し"などと検索したら参考記事があるようだ。例えば、
https://www.shinko-keirin.co.jp/keirinkan/kojoho/infomation/jissen/26.html
まったく同一の質問を繰り返すのはいかがなものか。
趣味のコード作成だろうから、他人に聞くような性質のものではないのではないか、
というのがコメントが付かなかった理由だろうと思う。自分で研究してください。
[返信 2] Re : ブロック崩しを作りたい
投稿者 : さびっち 投稿日時 : 2022/07/26(Tue) 09:12:43
自分で考えてわかるように努力します。
ありがとうございました。
自分で考えてわかるように努力します。
ありがとうございました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2026-04-02 05:13:21 )