Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта. Валерий Алексеевич Жарков
Чтение книги онлайн.
Читать онлайн книгу Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта - Валерий Алексеевич Жарков страница 26
Добавляем в наш проект (из отмеченной выше статьи или из Интернета) файл изображения помидора 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 initialiseTomatoes()
noOfTomatoes = (Me.ClientSize.Width – tomatoSpacing) / _
(tomatoImage.Width + tomatoSpacing)
' create an array to hold the tomato positions
ReDim tomatoes(noOfTomatoes)
' x coordinate of each potato
Dim tomatoX As Integer = tomatoSpacing / 2
Dim i As Integer
For i = 0 To tomatoes.Length – 1
tomatoes(i).rectangle = _
New Rectangle(tomatoX, tomatoDrawHeight, _
tomatoImage.Width, tomatoImage.Height)
tomatoX = tomatoX + tomatoImage.Width + tomatoSpacing
Next
End Sub
' Called to place a row of tomatoes.
Sub placeTomatoes()
Dim i As Integer
For i = 0 To tomatoes.Length – 1
tomatoes(i).rectangle.Y = tomatoDrawHeight
tomatoes(i).visible = True
Next
End Sub
Приведённый выше код в теле метода Form1_Paint заменяем на тот, который дан на следующем листинге.
Листинг 5.5. Метод для рисования изображения.
Private Sub Form1_Paint(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.PaintEventArgs) _
Handles MyBase.Paint
'Если необходимо, создаём новый буфер:
If (backBuffer Is Nothing) Then
backBuffer = New Bitmap(Me.ClientSize.Width, _
Me.ClientSize.Height)
End If
'Создаём объект класса Graphics из буфера:
Using g As Graphics = Graphics.FromImage(backBuffer)
'Очищаем форму:
g.Clear(Color.White)
'Рисуем изображение в буфере backBuffer: