Валерий Алексеевич Жарков

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


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

момент столкновения подаем звуковой сигнал 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. Добавление новых объектов

      Продолжаем усложнять игру за счёт добавления в неё новых объектов в виде продуктов питания, например, помидоров (tomatoes) в виде файла tomato.gif, рис. 5.6.

      Рис. 5.6.

      Помидор.

      В начале игры несколько i-х помидоров в виде массива tomatoes[i] должны появиться в верхней части экрана в качестве мишеней (рис. 5.7), которые должны исчезать после попадания в них летающего сыра (рис. 5.8).

      Попадание сыра в помидор определяется уже применяемым выше методом IntersectWith.

      Исчезновение помидоров выполняется при помощи свойства visible, которому присваивается логическое значение False (в коде: tomatoes(i).visible = False).

      Управляя при помощи кнопок Button и мыши перемещением батона хлеба, игрок может отражать сыр вверх таким образом, чтобы уничтожить как можно больше помидоров за меньшее время, набирая при этом очки.

      Добавляем в наш проект (из отмеченной выше статьи или из Интернета) файл изображения помидора tomato.gif по стандартной схеме, а именно: в меню Project выбираем Add Existing Item, в этой панели в окне “Files of type” выбираем “All Files”, в центральном окне находим и выделяем имя файла и щёлкаем кнопку Add (или дважды щёлкаем по имени файла). В панели Solution Explorer мы увидим этот файл.

      Теперь этот же файл tomato.gif встраиваем в проект в виде ресурса по разработанной выше схеме, а именно: в панели Solution Explorer выделяем появившееся там имя файла, а в панели Properties (для данного файла) в свойстве Build Action (Действие при построении) вместо заданного по умолчанию выбираем значение Embedded Resource (Встроенный ресурс).

      Рис. 5.7. Помидоры – мишени.

      Рис. 5.8. Помидоры исчезают после попадания в них сыра.

      Для программной реализации рисования и уничтожения помидоров после попадания в них сыра, в классе Form1 нашего проекта записываем следующий код.

      Листинг 5.4. Переменные и методы для помидоров (tomatoes).

      'Объявляем объект класса System.Drawing.Image для продукта:

      Dim tomatoImage As Image

      'Position and state of tomato

      Structure tomato

      Public rectangle As Rectangle

      Public visible As Boolean

      End Structure

      ' Spacing between tomatoes. Set once for the game

      Dim tomatoSpacing As Integer = 4

      ' Height at which the tomatoes are drawn. Will change

      ' as the game progresses. Starts at the top.

      Dim tomatoDrawHeight As Integer = 4

      ' The number of tomatoes on the screen. Set at the start

      ' of the game by initialiseTomatoes.

      Dim noOfTomatoes As Integer

      ' Positions of the tomato targets.

      Dim tomatoes() As tomato

      ' called once to set up all the tomatoes.

      Sub