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

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

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

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

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

задачи программа должна отслеживать текущую позицию (в виде координат) объекта, и затем, когда значение одной из двух координат объекта станет равным значению одной из двух координат границы, изменить координаты объекта в противоположном от границы направлении.

      Таким образом, в данном проекте приведённый выше метод updatePositions заменяем на следующий.

      Листинг 4.5. Отскок объекта от границ.

      'Перемещение по оси "x" вправо (Right):

      Dim goingRight As Boolean = True

      'Перемещение по оси "y" вниз (Down):

      Dim goingDown As Boolean = True

      Private Sub updatePositions()

      If (goingRight) Then

      cx = cx + 1

      Else

      cx = cx – 1

      End If

      If ((cx + cheeseImage.Width) >= _

      Me.ClientSize.Width) Then

      goingRight = False

      End If

      If (cx <= 0) Then

      goingRight = True

      End If

      If (goingDown) Then

      cy = cy + 1

      Else

      cy = cy – 1

      End If

      If ((cy + cheeseImage.Height) >= _

      Me.ClientSize.Height) Then

      goingDown = False

      End If

      If (cy <= 0) Then

      goingDown = True

      End If

      End Sub

      В этом коде видно, что координаты объекта “x, y” изменяются на величину +1, когда объект перемещается в положительном направлении осей “x, y” (вправо и вниз), и изменяются на величину -1, когда объект перемещается в отрицательном направлении осей “x, y” (влево и вверх).

      Код использует свойства ширины и высоты объекта (cheeseImage.Width и cheeseImage.Height) и экрана Me.ClientSize.Width и Me.ClientSize.Height). Вследствие этого программа будет нормально работать для любых размеров объекта и формы или экрана.

      В режиме выполнения (Build, Build Selection; Debug, Start Without Debugging) мы видим, что на форме Form1 изображение типа встроенного нами рисунка сыра cheese.jpg перемещается по диагоналям в различных направлениях, отскакивая от границ экрана (рис. 4.4).

      Методика приостановки и возобновления анимации уже была приведена выше.

      4.4. Методика управления скоростью перемещения объекта и добавления звукового сигнала

      Предыдущая программа довольно медленно перемещает объект по экрану. Если ширина экрана, например, 100 пикселей, то с частотой 25 кадров в секунду объект пересекает этот экран по горизонтальной прямой приблизительно за 4 секунды. Для управления скоростью перемещения объекта вместо предыдущего кода, в котором изображение перемещается на 1 пиксель через каждый Interval времени срабатывания таймера, можно изменить количество пикселей xSpeed, на которое объект перемещается через каждый Interval времени срабатывания таймера, как показано в следующем коде:

      If (goingRight) Then

      cx += xSpeed

      Else

      cx -= xSpeed

      End If

      Изменяя значение xSpeed, можно увеличить или уменьшить горизонтальную составляющую (по оси “x”) скорости объекта.

      Следующий аналогичный код для координаты “y” позволяет изменять вертикальную составляющую скорости объекта:

      If

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