Как сделать само столкновение с движущимися блоками? - VB
Формулировка задачи:
Игра заключается в поднятии "смайликом" ключа, пройдя через движущиеся блоки. При достижении цели появляется окно с надписью "победа", при касании блоков "поражение" и откидывается "смайл" на начало.
Блоки двигаются таймерами, "смайл" управляется стрелками.
Вопрос: Как сделать само столкновение с движущимися блоками?
Кто чем может ^^
Вот так примитивно это выглядит)
Решение задачи: «Как сделать само столкновение с движущимися блоками?»
textual
Листинг программы
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) With o Select Case KeyCode Case 37: .Left = .Left - 100 'влево Case 38: .Top = .Top - 100 'вверх Case 39: .Left = .Left + 100 'вправо Case 40: .Top = .Top + 100 'вниз Case Else: Exit Sub End Select If I(o, key) Then MsgBox "Победа!", , "Ключ подобран!" .Left = 3500 .Top = 1000 End If If I(o, block1) Or I(o, block2) Then Crash End With End Sub Function I(a As Image, b As Image) As Boolean If Abs(a.Top + a.Height / 2 - b.Top - b.Height / 2) < a.Height / 2 + b.Height / 2 Then If Abs(a.Left + a.Width / 2 - b.Left - b.Width / 2) < a.Width / 2 + b.Width / 2 Then I = True End If End If End Function Private Sub Form_Load() block1.Tag = 20 block2.Tag = 25 End Sub Sub Crash() MsgBox "УВЫ!", , "Игра проиграна!" o.Left = 3500 o.Top = 1000 End Sub Private Sub Timer1_Timer() '20 With block1 If .Left > 5760 Then .Tag = -.Tag - 10 ElseIf .Left < 120 Then .Tag = -.Tag - 10 End If .Left = .Left + .Tag End With With block2 If .Left > 5760 Then .Tag = -.Tag - 10 ElseIf .Left < 120 Then .Tag = -.Tag - 10 End If .Left = .Left + .Tag End With If I(o, block1) Or I(o, block2) Then Crash End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д