Добавляйте баллы, когда PictureBox1 попадает в PictureBox2 - PullRequest
2 голосов
/ 23 февраля 2020

Я пытаюсь сделать простую игру с использованием VB. Net и ее концепция похожа на ловлю яиц.

Я ожидаю, что когда яйцо падает (PictureBox1), ловец (PictureBox2) ловит яйцо и получает 1 очко за каждую добычу. Моя идея заключается в том, что, когда местоположение яйца совпадает с местоположением ловушки, оно добавляет точку. Но это не сработало. Любое предложение здесь?

 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    PictureBox1.Top += 5

    If PictureBox1.Location.Y = PictureBox2.Location.Y Then
        score += 1
        Label1.Text = score

    End If

End Sub

А вот код для игры закончен:

 Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    If PictureBox1.Location.Y > 400 Then
        Me.Dispose()
        MsgBox("game over")
    End If
 End Sub

1 Ответ

1 голос
/ 23 февраля 2020

Добро пожаловать на сайт! Я считаю, что свойство Bounds должно работать для этого. Также, возможно, вы захотите просто использовать логическое значение (или вызвать событие) для столкновения, так что вы не будете выполнять работу дважды.

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    PictureBox1.Top += 5
    Dim itHappened as Boolean

    Dim other_boxes as New List(Of PictureBox) from {PictureBox2} ', PictureBox3, PictureBox4}
    For each box in other_boxes
         If PictureBox1.Bounds.IntersectsWith(box.Bounds) Then
                    score += 1
                    Label1.Text = score
                    itHappened = True                  
         else
                itHappened = False 'depending on your logic, may not be the best place
         End If
    Next


    If PictureBox1.Location.Y > 400 Then
        Me.Dispose()
        MsgBox("game over")
    End If

End Sub
...