Делаем игру - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5