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

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

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

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

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

style="font-size:15px;">      'Рисуем изображение на форме Form1:

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

      End Sub

      Добавление новых объектов в игру соответственно усложняет код. В панели Properties (для Form1) на вкладке Events дважды щёлкаем по имени события Load. Появившийся шаблон метода Form1_Load после записи нашего кода принимает следующий вид.

      Листинг 5.6. Метод для рисования изображения.

      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()

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

      Timer1.Enabled = True

      End Sub

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

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

      Sub updatePositions()

      If (goingRight) Then

      cx += xSpeed

      Else

      cx -= xSpeed

      End If

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

      goingRight = False

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      End If

      If (cx <= 0) Then

      goingRight = True

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      End If

      If (goingDown) Then

      cy += ySpeed

      Else

      cy -= ySpeed

      End If

      If ((cy + cheeseImage.Height) >= Me.ClientSize.Height) Then

      goingDown = False

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      End If

      If (cy <= 0) Then

      goingDown = True

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      End If

      'Задаём прямоугольникам координаты объектов:

      cheeseRectangle.X = cx

      cheeseRectangle.Y = cy

      breadRectangle.X = bx

      breadRectangle.Y = by

      'Проверяем столкновение объектов с учётом помидоров:

      If (goingDown) Then

      ' only bounce if the cheese is going down

      If (cheeseRectangle.IntersectsWith(breadRectangle)) Then

      'В момент столкновения подаем звуковой сигнал Beep:

      Beep()

      ' we have a collision

      Dim rightIn As Boolean = breadRectangle.Contains( _

      cheeseRectangle.Right,

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