Чтение онлайн

на главную

Жанры

Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 6: Программирование на Visual Basic искусственного интеллекта. Продолжение 2
Шрифт:

hank.NudgeHanksDirection(-D_MOVEMENT, 0)

ElseIf (i = PocketPC_UP) Then

hank.NudgeHanksDirection(0, -D_MOVEMENT_UP)

ElseIf (i = PocketPC_DOWN) Then

hank.NudgeHanksDirection(0, D_MOVEMENT)

End If

TextBox1.Text = ""

End Sub

Дважды щёлкаем по значку для таймера Timer (или в панели Properties, для этого компонента, на вкладке Events дважды щёлкаем по имени соответствующего события). Появившийся шаблон метода после записи нашего кода принимает

следующий вид.

Листинг 22.8. Метод, вызываемый таймером через каждый интервал Interval времени.

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

ByVal e As System.EventArgs) Handles timerGame.Tick

' '–

' 'This timer is the heartbeat if the game.

' 'Every time it gets called we

' 'allow all of the game characters to move,

' 'we check for collisions beween objects,

' 'and we render the board to the screen.

' '–

'–

'If we are not running, exit the sub

'–

If (m_playfieldManager Is Nothing) Then Exit Sub

'–

'Give all the characters a chance to move

'–

m_playfieldManager.MoveCharactersOnPlayfield

'–

'Render the playfield and all of the objects onto the form

'–

m_myFormsGraphics.DrawImage(m_playfieldManager. _

RenderPlayField, GAME_SCREEN_DX, GAME_SCREEN_DY)

End Sub

В панели Properties, для формы Form1, на вкладке Events дважды щёлкаем по имени события MouseDown. Появившийся шаблон после записи нашего кода принимает следующий вид.

Листинг 22.9. Метод-обработчик события.

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

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

Handles MyBase.MouseDown

'Make sure there is a game we are playing

If Not (m_playfieldManager Is Nothing) Then

If e.Button = MouseButtons.Right Then

m_playfieldManager.HankTheWonderCaveman. _

MakeHankJump

Else

'–

'Figure out where on the game playfield we clicked

'–

Dim x_GAME As Integer

Dim y_GAME As Integer

x_GAME = e.X – GAME_SCREEN_DX

y_GAME = e.Y – GAME_SCREEN_DY

'Let Hank figure out what to do

m_playfieldManager.HankTheWonderCaveman. _

setHanksDestination(x_GAME, y_GAME)

End If

End If

End Sub

Мы закончили написание программы в главный класс Form1 (для формы Form1 с пользовательским интерфейсом игры).

Теперь в наш проект добавляем новые файлы (для программирования соответствующих игровых действий). Добавить в проект файл можно по двум вариантам.

По первому варианту, добавляем в проект нужный файл по обычной схеме: в панели Solution Explorer

выполняем правый щелчок по имени проекта, в контекстном меню выбираем Add, Existing Item (или Project, Add Existing Item), в панели Add Existing Item в окне “Files of type” выбираем “All Files”, в центральном окне находим (в папке компьютера с загруженными, например, из Интернета, файлами) и с нажатой клавишей Ctrl выделяем все файлы формата (.vb) и щёлкаем кнопку Add, чтобы после этого добавления в панели Solution Explorer были файлы, показанные на рис. 22.11.

По второму варианту, в панели Solution Explorer выполняем правый щелчок по имени проекта и в контекстном меню выбираем Add, New Item, в панели Add New Item выделяем шаблон Code File, в окне Name записываем имя BorisTheMenacingBird.vb и щёлкаем кнопку Add. В проект (и в панель Solution Explorer) добавляется этот файл, открывается пустое окно редактирования кода, в которое записываем код со следующего листинга.

Листинг 22.10. Новый файл.

'–

'This class represents one of the characters in the game,

' "BorisTheMenacingBird"

'

'It contains logic for the rendering and movement of the character

'–

Public Class BorisTheMenacingBird

Inherits DrawablePlayfieldMultiFrameBitmap

Private m_yVelocityBoris As Integer 'How fast are _

'we traveling vertically?

Private m_xVelocityBoris As Integer 'How fast are we

'traveling vertically?

Const MAX_DY_BORIS_FLYING = 4

Private m_y_accelerationBorris As Integer

Private m_world_I_Inhabit As PlayFieldManager

Private m_myModeOfMovement As ModeOfMovement

Public Enum ModeOfMovement As Integer

 Flying = 1

End Enum

'When did we last update a flipped image

Private m_lastTickCountWhenImageFlipped As Integer

Const DTIME_TO_FLAP_WINGS = 400 'Every 600 ms we should

'flap our wings

'–

'These are the current image states for Hank

'–

Private Enum BorisImagesIndexes

 flyLeft1 = 1

 flyLeft2 = 2

End Enum

'–

'[in] X,Y : Position to start Hank at

'[in] worldHankInhabits : Playfield in which Hank lives

'–

Sub New(ByVal x As Integer, ByVal y As Integer, _

ByVal world_I_Inhabit As PlayFieldManager)

 '–

 'Get the bitmaps for our character

 '–

 Dim col As Collection

 col = g_FlyingBirdPictureCollection

 m_world_I_Inhabit = world_I_Inhabit

 ChangeMyMovementState(ModeOfMovement.Flying)

 'Start him off as falling.

Поделиться:
Популярные книги

Неожиданный наследник

Яманов Александр
1. Царь Иоанн Кровавый
Приключения:
исторические приключения
5.00
рейтинг книги
Неожиданный наследник

Ты не мой Boy 2

Рам Янка
6. Самбисты
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Ты не мой Boy 2

Курсант: назад в СССР

Дамиров Рафаэль
1. Курсант
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Курсант: назад в СССР

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Приручитель женщин-монстров. Том 7

Дорничев Дмитрий
7. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 7

Я – Орк. Том 3

Лисицин Евгений
3. Я — Орк
Фантастика:
юмористическое фэнтези
попаданцы
5.00
рейтинг книги
Я – Орк. Том 3

Титан империи

Артемов Александр Александрович
1. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи

Цеховик. Книга 1. Отрицание

Ромов Дмитрий
1. Цеховик
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Цеховик. Книга 1. Отрицание

Я все еще не князь. Книга XV

Дрейк Сириус
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще не князь. Книга XV

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Невеста напрокат

Завгородняя Анна Александровна
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Невеста напрокат

Изменить нельзя простить

Томченко Анна
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Изменить нельзя простить

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

Младший научный сотрудник

Тамбовский Сергей
1. МНС
Фантастика:
попаданцы
альтернативная история
6.40
рейтинг книги
Младший научный сотрудник