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

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

Шрифт:

"валуном или птицей. Адам будет подскакивать, " + _

"чтобы не быть поражённым этими объектами. " + _

"Адам также потеряет энергию, " + _

"если он упадёт с большой высоты.")

MsgBox("Управление Адамом состоит в том, " + _

"чтобы щёлкать по экрану. После каждого щелчка " + _

"появляется пунктирная линия, показывающая, " + _

"куда пойдёт Адам. Чтобы Адам подпрыгнул " + _

"от валуна или птицы, " + _

"следует нажать клавишу пробела.")

'Bring the focus back to the textbox

'so it gets the keyboard input

TextBox1.Focus

End Sub

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

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

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

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

Handles TextBox1.KeyDown

'–

'This textbox is a way to get the keyboard input

'for the game becuase:

' 1. When you hit the "START" button, it get's the focus

'(so the form no longer gets keydown events)

' 2. The Start Button does not get key-down events

'–

If (m_playfieldManager Is Nothing) Then

Return

End If

Dim i As Integer

i = e.KeyValue

Const PocketPC_BUTTON_PUSHED = 134

Const Keyboard_SPACE_PUSHED = 32

Const PocketPC_UP = 38

Const PocketPC_DOWN = 40

Const PocketPC_LEFT = 37

Const PocketPC_RIGHT = 39

Dim hank As HankTheWonderCaveman = _

m_playfieldManager.HankTheWonderCaveman

Const D_MOVEMENT = 14

Const D_MOVEMENT_UP = 70

If (i = PocketPC_BUTTON_PUSHED) Or _

(i = Keyboard_SPACE_PUSHED) Then

hank.MakeHankJump

e.Handled = True

ElseIf (i = PocketPC_RIGHT) Then

hank.NudgeHanksDirection(D_MOVEMENT, 0)

ElseIf (i = PocketPC_LEFT) Then

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

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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