Вход/Регистрация
Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 6: Программирование на Visual Basic искусственного интеллекта. Продолжение 2
вернуться

Жарков Валерий

Шрифт:

'–

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.

 'Initialize our base class with these…

 MyBase.Initialize_DrawableMultiPlayfiedBitmapObject( _

x, y, col, True)

 'Set the image index

 Me.CurrentFrameIndex = BorisImagesIndexes.flyLeft1

 'Set Boris' speed

 m_xVelocityBoris = -4

 m_y_accelerationBorris = 1

 '–

 'Set the collision rectangle for Hank

 '–

 Const BORIS_COLLISION_STARTX = 11

 Const BORIS_COLLISION_DX = 31

 Const BORIS_COLLISION_STARTY = 6

 Const BORIS_COLLISION_DY = 7

 Me.CollisionRectangle = New Rectangle( _

BORIS_COLLISION_STARTX, BORIS_COLLISION_STARTY, _

BORIS_COLLISION_DX, BORIS_COLLISION_DY)

End Sub

'–

'This function should be called to bring about any change

'of state

'It sets/resets any other variables we need to when we deal

'with state transitions

'–

Private Sub ChangeMyMovementState(ByVal newState As _

ModeOfMovement)

 m_myModeOfMovement = newState

  • Читать дальше
  • 1
  • ...
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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