Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта. Валерий Алексеевич Жарков

Чтение книги онлайн.

Читать онлайн книгу Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта - Валерий Алексеевич Жарков страница 25

Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта - Валерий Алексеевич Жарков

Скачать книгу

и 4 маленький прямоугольник ударяется о большой прямоугольник сбоку под углом 45 градусов и отражается под этим же углом и по этой же линии. В схемах 2 и 3 маленький прямоугольник падает на большой прямоугольник под углом 45 градусов, но отражается не по линии падения, а по линии отражения, перпендикулярной линии падения.

      Для реализации более правильных схем столкновений, показанных на рис. 5.5, в нашем проекте вместо приведённого выше метода updatePositions для изменения координат записываем следующий метод, дополненный новым кодом для обнаружения столкновения объектов.

      Листинг 5.3. Метод для изменения координат и обнаружения столкновения объектов.

      Sub updatePositions()

      If (goingRight) Then

      cx += xSpeed

      Else

      cx -= xSpeed

      End If

      If ((cx + cheeseImage.Width) >= Me.ClientSize.Width) Then

      goingRight = False

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      End If

      If (cx <= 0) Then

      goingRight = True

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      End If

      If (goingDown) Then

      cy += ySpeed

      Else

      cy -= ySpeed

      End If

      If ((cy + cheeseImage.Height) >= Me.ClientSize.Height) Then

      goingDown = False

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      End If

      If (cy <= 0) Then

      goingDown = True

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      End If

      'Проверяем столкновение объектов:

      If (goingDown) Then

      'Если сыр движется вниз и имеется столкновение:

      If (cheeseRectangle.IntersectsWith(breadRectangle)) Then

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      'мы имеем столкновение:

      Dim rightIn As Boolean = breadRectangle.Contains( _

      cheeseRectangle.Right, _

      cheeseRectangle.Bottom)

      Dim leftIn As Boolean = breadRectangle.Contains( _

      cheeseRectangle.Left, _

      cheeseRectangle.Bottom)

      'виды столкновений:

      If (rightIn And leftIn) Then

      'отскок вверх:

      goingDown = False

      Else

      'отскок вверх:

      goingDown = False

      'отскоки по горизонтали:

      If (rightIn) Then

      goingRight = False

      End If

      If (leftIn) Then

      goingRight = True

      End If

      End If

      End If

      End If

      End Sub

      В режиме выполнения (Build, Build Selection; Debug, Start Without Debugging) при помощи кнопок Button и мыши мы можем перемещать хлеб и этим хлебом, как ракеткой, отбивать сыр вверх не только верхней стороной прямоугольника (описанного вокруг объекта), как было в предыдущем коде, но теперь и боковыми сторонами этого прямоугольника. Однако мы можем отбивать, только если сыр перемещается сверху вниз.

      5.5. Добавление новых объектов

      Продолжаем усложнять игру за счёт добавления в неё новых объектов в виде

Скачать книгу