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

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


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

продукта:

      Dim cheeseImage As Image

      'Загружаем в проект файлы изображений и звуков по такой схеме:

      'Создаём объект myAssembly класса Assembly и присваиваем ему

      'ссылку на исполняемую сборку нашего приложения:

      Dim myAssembly As Assembly = Assembly.GetExecutingAssembly()

      'Создаём объект myAssemblyName

      'класса System.Reflection.AssemblyName и присваиваем ему

      'имя сборки, которое состоит из имени проекта,

      'Version, Culture, PublicKeyToken:

      Dim myAssemblyName As AssemblyName = myAssembly.GetName()

      'Из имени сборки при помощи свойства Name

      'выделяем имя проекта типа string:

      Dim myName_of_project As String = myAssemblyName.Name

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

      ByVal e As System.Windows.Forms.PaintEventArgs) _

      Handles MyBase.Paint

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

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

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

      cheeseImage = _

      New Bitmap(myAssembly.GetManifestResourceStream( _

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

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

      e.Graphics.DrawImage(cheeseImage, 10, 20)

      End Sub

      Строим и запускаем программу на выполнение обычным образом:

      Build, Build Selection;

      Debug, Start Without Debugging.

      В ответ VS выводит панель Deploy (с именем проекта), на которой выбираем устройство (Device) типа Windows Mobile 6 Classic (или Professional) Emulator и щёлкаем кнопку Deploy.

      Появляется форма Form1 с изображением типа встроенного нами рисунка сыра cheese.jpg (рис. 4.1).

      Верхний левый угол изображения по отношению к верхнему левому углу экрана (где находится начало координат) расположен в соответствии с заданными нами координатами в строке кода (e.Graphics.DrawImage(myBitmap, 10, 20)).

      4.2. Методика анимации объекта

      Программа может рисовать теперь сыр на экране. Затем она должна перемещать сыр, неоднократно рисуя и перерисовывая изображение сыра в различных позициях. Если программа делает это достаточно быстро, создаётся иллюзия движения (анимация).

      Следующий пример кода создаёт метод updatePositions, который перемещает сыр. На данной стадии проектирования сыр будет только двигаться вправо и вниз (по осям координат “x” и “y”). Таким образом, добавляем в данный (или новый) проект такой код.

      Листинг 4.2. Изменение координат продукта.

      'Текущая абсцисса объекта:

      Dim cx As Integer = 50

      'Текущая ордината объекта:

      Dim cy As Integer = 100

      Private Sub updatePositions()

      cx = cx + 1

      cy = cy + 1

      End Sub

      Видно, что программа использует переменные cx и cy, чтобы задавать местоположение сыра. Сейчас их значения становятся больше на единицу каждый раз, когда вызывается обновление экрана, что заставляет сыр двигаться направо и вниз.

      В процессе игры, для вызова метода updatePositions через одинаковые промежутки времени, целесообразно использовать таймер. С панели инструментов Toolbox размещаем на форме компонент Timer (Таймер). В панели Properties (для данного компонента Timer) в свойстве Enabled оставляем логическое значение False, а свойству Interval задаём значение 40 (миллисекунд, что соответствует 25 кадрам в секунду по стандарту телевещания России; 1000 миллисекунд равно 1 секунде).

      Важно отметить, что добавление в проект компонента Timer (Таймер) означает, что наша игра должна отключить таймер, когда игра находится в фоновом режиме, и включить таймер при активации игры. Именно поэтому в панели Properties (для данного компонента