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

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


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

нашего кода принимает следующий вид.

      Листинг 20.12. Метод-обработчик перемещения мыши.

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

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

      Handles MyBase.MouseMove

      If e.Button = Windows.Forms.MouseButtons.Left Then

      Dim mousePos As Point = Control.MousePosition

      mousePos.Offset(mouseOffset.X, mouseOffset.Y)

      Location = mousePos

      End If

      End Sub

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

      Листинг 20.13. Метод-обработчик нажатия клавиши.

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

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

      Handles MyBase.KeyPress

      Select Case e.KeyChar

      Case "p"c, "P"c

      If paused Then

      Restart()

      Else

      Pause()

      End If

      Case "m"c, "M"c

      If Me.FormBorderStyle = _

      Windows.Forms.FormBorderStyle.Fixed3D Then

      Me.FormBorderStyle = _

      Windows.Forms.FormBorderStyle.None

      Me.Menu = Nothing

      Else

      Me.FormBorderStyle = _

      Windows.Forms.FormBorderStyle.Fixed3D

      'Me.Menu = Me.MainMenu1

      End If

      Case Else

      ' Do nothing.

      End Select

      End Sub

      Чтобы программа периодически через Interval времени дополняла поле игры новыми разноцветными кругами (взамен выбитых игроком кругов), ниже формы дважды щёлкаем по значку для первого таймера Timer1 (или в панели Properties для этого компонента на вкладке Events дважды щёлкаем по имени события Tick). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.

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

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

      ByVal e As System.EventArgs) Handles Timer1.Tick

      ' Add another row to the grid and update the screen.

      matrix.AddRow()

      matrix.Draw(Me.PictureBox1.CreateGraphics(), _

      Me.PictureBox1.BackColor)

      End Sub

      Чтобы в верхней части формы (на синей полоске для свойства Text) после начала игры шел отсчёт времени (Time), ниже формы дважды щёлкаем по значку для второго таймера Timer2 (или в панели Properties для этого компонента на вкладке Events дважды щёлкаем по имени события Tick). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.

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

      'Счётчик секунд, который обнуляем в начале каждой игры

      'в методе StartNewGame:

      Dim secondCounter As Integer

      'Время окончания игры:

      Dim EndGameTime As Integer = 60

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

      ByVal e As System.EventArgs) Handles Timer2.Tick

      secondCounter = secondCounter + 1

      Me.Text = "Time : " & secondCounter.ToString()

      'Мелодия окончания игры:

      If secondCounter = EndGameTime Then

      My.Computer.Audio.Play( _

      "..\..\Resources\win.wav", _

      AudioPlayMode.Background)

      End If

      End Sub

      Схема записи и вывода справочной информации, например, с правилами игры после выбора команды Contents (для элемента управления MenuStrip) и после выбора других команд уже приводилась в наших предыдущих работах.

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

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

      По первому варианту, добавляем в проект нужный файл по обычной схеме: в панели Solution Explorer выполняем правый щелчок по имени проекта, в контекстном меню выбираем Add, Existing Item, в панели Add Existing Item в окне “Files of type” выбираем “All Files”, в центральном окне