ここから本文です

visual studio 2013を使って、vbで

kai********さん

2016/11/2121:16:53

visual studio 2013を使って、vbで

①「Button1を押すと、Timer1が作動して、PictureBox1の画像が右に動き、PictureBox2の左側に当たるとMsgBoxが表示する」
というプログラムを作ってうまくできたのですが、今度は
②「Button1を押すと、Timer1が作動して、PictureBox1の画像が上に動き、PictureBox2の下側(底の部分)に当たるとMsgBoxが表示する」
を作りたいのですが、やり方が全く分かりません。
やり方がわかる方、回答をよろしくお願いします。

一応①のプログラムコード貼っときます。
Public Class Form1
Dim a As Integer
Dim b As Integer

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Timer1.Start()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
a = PictureBox1.Right
b = PictureBox2.Left
PictureBox1.Left = PictureBox1.Left + 10
Timer1.Interval = 1

If a >= b Then
MsgBox("当たりました")

End If
End Sub
End Class

見にくいですが、やりたいこと②を表した画像です。(赤色が青色に触れるとMsgBoxが出るようにしたい)

e As EventArgs,PictureBox2,Timer1.Interval,End Sub,MsgBox,PictureBox1.Top,Timer1.Start

閲覧数:
36
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

tokit_sさん

2016/11/2121:48:54

こんな感じですか。

Public Class Form1
Dim a As Integer
Dim b As Integer

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Timer1.Interval = 100
Timer1.Start()
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim a = PictureBox2.Bottom
Dim b = PictureBox1.Top
PictureBox1.Top = PictureBox1.Top - 10

If a >= b Then
Timer1.Stop()
MsgBox("当たりました")
End If

End Sub
End Class

質問者様のコードでは、
当り判定で、
当りと判定した後すぐにタイマーを止めないのはよくないです。
あと、Tickイベントで
Timer1.Interval = 1
としているのは不要ですね。

質問した人からのコメント

2016/11/22 20:29:40

できました!
ありがとうございます!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる