Как сделать само столкновение с движущимися блоками? - 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

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы