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

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

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

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

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

_

      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:

      g.DrawImage(cheeseImage, cx, cy)

      g.DrawImage(breadImage, bx, by)

      Dim i As Integer

      For i = 0 To tomatoes.Length – 1

      If (tomatoes(i).visible) Then

      g.DrawImage(tomatoImage, _

      tomatoes(i).rectangle.X, _

      tomatoes(i).rectangle.Y)

      End If

      Next

      'Записываем очки игрока:

      g.DrawString(messageString, messageFont, _

      messageBrush, messageRectangle)

      End Using

      'Рисуем изображение на форме Form1:

      e.Graphics.DrawImage(backBuffer, 0, 0)

      End Sub

      Приведённый выше код в теле метода Form1_Load (для загрузки файлов изображений игровых объектов) заменяем на тот, который дан на следующем листинге.

      Листинг 5.10. Метод для загрузки файлов изображений.

      Private Sub Form1_Load(ByVal sender As System.Object, _

      ByVal e As System.EventArgs) Handles MyBase.Load

      'Загружаем в объекты класса System.Drawing.Image

      'добавленные в проект файлы изображений заданного формата

      'при помощи потока встроенного ресурса (ResourceStream):

      cheeseImage = _

      New Bitmap(myAssembly.GetManifestResourceStream( _

      myName_of_project + "." + "cheese.JPG"))

      breadImage = _

      New Bitmap(myAssembly.GetManifestResourceStream( _

      myName_of_project + "." + "bread.JPG"))

      'Инициализируем прямоугольники, описанные вокруг объектов:

      cheeseRectangle = New Rectangle(cx, cy, _

      cheeseImage.Width, cheeseImage.Height)

      breadRectangle = New Rectangle(bx, by, _

      breadImage.Width, breadImage.Height)

      'Загружаем файл изображения нового объекта:

      tomatoImage = _

      New Bitmap(myAssembly.GetManifestResourceStream( _

      myName_of_project + "." + "tomato.gif"))

      'Инициализируем массив новых объектов и прямоугольников,

      'описанные вокруг этих объектов:

      initialiseTomatoes()

      'Размещаем новые объекты в верхней части экрана:

      placeTomatoes()

      'Создаём и инициализируем шрифт для записи очков:

      messageFont = New Font(FontFamily.GenericSansSerif, 10, _

      FontStyle.Regular)

      'Резервируем прямоугольник на экране для записи очков:

      messageRectangle = New Rectangle(0, 0, _

      Me.ClientSize.Width, scoreHeight)

      'Задаём цвет кисти для записи очков:

      messageBrush = New SolidBrush(Color.Black)

      'Включаем таймер:

      Timer1.Enabled = True

      End Sub

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

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

      Sub updatePositions()

      If (goingRight) Then

      cx += xSpeed

      Else

      cx -= xSpeed

      End If

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

      goingRight

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