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