Делаем игру - Visual Basic .NET
Формулировка задачи:
У меня на форме pictureBox при нажимании клавиш она двигается! как сделать чтобы при встречи с другим pictureBox1,pictureBox1 исчезал! как-то над с помоoью Location?
Решение задачи: «Делаем игру»
textual
Листинг программы
Dim WithEvents VisTMR As New Timer Dim WithEvents PictureBox1 As New PictureBox 'подвижный, перемещается при помощи кнопок A S D W Dim WithEvents PictureBox2 As New PictureBox 'неподвижный Dim BoxStep As Integer = 10 ' шаг перемещения PictureBox1 Dim startPos As Point ' стартовое положение PictureBox1 Dim LastPos As Point 'положение PictureBox1 перед последним шагом Dim interval As Integer = 10000 'время, через которое появится пропавший PictureBox1 после столкновения Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With Me.VisTMR .Interval = interval End With With PictureBox1 .Size = New Size(20, 20) .Location = New Point(50, 50) .BackColor = Color.Blue End With With PictureBox2 .Size = New Size(20, 20) .Location = New Point(150, 150) .BackColor = Color.Red End With Me.startPos = Me.PictureBox1.Location Me.Controls.Add(PictureBox1) Me.Controls.Add(PictureBox2) With Me .Size = New Size(500, 500) .FormBorderStyle = Windows.Forms.FormBorderStyle.Fixed3D .MinimizeBox = False .MaximizeBox = False End With End Sub Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress LastPos = Me.PictureBox1.Location Select Case e.KeyChar Case Is = "a" Dim p As New Point(-BoxStep, 0) Me.PictureBox1.Location = LastPos + p Case Is = "d" Dim p As New Point(BoxStep, 0) Me.PictureBox1.Location = LastPos + p Case Is = "s" Dim p As New Point(0, BoxStep) Me.PictureBox1.Location = LastPos + p Case Is = "w" Dim p As New Point(0, -BoxStep) Me.PictureBox1.Location = LastPos + p End Select Check_Connection() End Sub Private Sub Check_Connection() Dim L1, L2, S1, S2 As Point L1 = Me.PictureBox1.Location L2 = Me.PictureBox2.Location S1 = Me.PictureBox1.Size S2 = Me.PictureBox2.Size If ((L1.X <= L2.X And L2.X <= L1.X + S1.X) Or (L1.X <= L2.X + S2.X And L2.X + S2.X <= L1.X + S1.X)) And ((L1.Y <= L2.Y And L2.Y <= L1.Y + S1.Y) Or (L1.Y <= L2.Y + S2.Y And L2.Y + S2.Y <= L1.Y + S1.Y)) Then Select Case MsgBox("Произошло столкновение! Вернуть синий квадрат в исходное положение[Да] или на шаг назад[Нет] или сделать невидимым (он появится на стартовой позиции через " & interval / 1000 & "секунд)[Отмена]?", MsgBoxStyle.Information Or MsgBoxStyle.YesNoCancel) Case Is = MsgBoxResult.Yes Me.PictureBox1.Location = Me.startPos Case Is = MsgBoxResult.No Me.PictureBox1.Location = Me.LastPos Case Is = MsgBoxResult.Cancel Me.PictureBox1.Visible = False Me.VisTMR.Start() End Select End If End Sub Private Sub VisTMR_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles VisTMR.Tick Me.PictureBox1.Location = startPos Me.PictureBox1.Visible = True Me.VisTMR.Stop() End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д