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

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


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

находим (например, в папке с загруженными из Интернета файлами) и с нажатой клавишей Ctrl выделяем имена файлов и щёлкаем кнопку Add. В панели Solution Explorer мы увидим эти файлы (рис. 21.13). В панели Properties свойства этих файлов оставляем заданными по умолчанию (рис. 21.14).

      Для ввода в проект новой формы (для таблицы с результатами игры) в меню Project выбираем Add Windows Form, в панели Add New Item оставляем заданные по умолчанию параметры и щёлкаем кнопку Add. В ответ VS выводит новую форму Form2 и добавляет в панель Solution Explorer новый пункт Form2.vb. Эта форма Form2, которая должна выводиться после выбора команды Показать в меню Очки, будет проектироваться программно согласно приведённому далее коду.

      С панели инструментов Toolbox переносим на форму Form2 (точнее, ниже формы) первый таймер Timer. В панели Properties (для этого таймера) в свойстве Enabled оставляем заданное по умолчанию значение False, т.к. мы включим этот таймер в программе в нужном месте при помощи строки (Timer1.Enabled = True). А в свойстве Interval вместо заданных по умолчанию 100 миллисекунд задаём, например, значение 20 миллисекунд.

      Аналогично переносим на форму Form2 второй таймер Timer. В панели Properties (для этого таймера) в свойстве Enabled оставляем заданное по умолчанию значение False, а в свойстве Interval задаём 40 миллисекунд.

      Аналогично добавляем в проект третью форму Form3, которая будет выводиться после выбора команды Справка в меню Помощь. На форме Form3 размещаем какой-либо элемент управления, например, TextBox, в который записываем справочную информацию, например, правила игры по описанной ранее методике.

      Аналогично добавляется и проектируется следующая форма, которая должна выводиться после выбора команды “О программе” в меню Помощь.

      Свойства всех элементов управления можно стандартно изменять, как описано ранее.

      21.4. Код программы

      Открываем файл Form1.vb (например, так: File, Open, File) и вверху записываем директиву для подключения требуемого пространства имен:

      Imports System.IO 'Для класса StreamWriter.

      Напомним, что эту строку можно и не записывать, но тогда нам придётся перед каждым классом записывать это пространство имён.

      Теперь в классе Form1 нашего проекта записываем следующие переменные и методы.

      Листинг 21.1. Переменные и методы.

      Const intBaseX As Integer = 10

      Const intBaseY As Integer = 120

      Dim Rand As New Random

      '***

      Dim playerName As String

      Dim playerScore As Double

      Dim playerTime As Integer

      Dim DDScore As New DPaint

      Dim DDTime As New DPaint

      '***

      Dim intFlag As Integer = -1

      Dim flagMadeNew = 0

      Dim posMoveTo As Integer

      Dim MPBoxes(80) As MotionPic

      Dim ThreeBI(2) As Integer

      Dim ThreeBP(2) As Integer

      Dim prePic(2) As PictureBox

      Private Sub InitBoard(ByVal plName As String, _

      ByVal plScore As Double, ByVal plTime As Integer)

      playerName = plName

      playerScore = plScore

      playerTime = plTime

      If flagMadeNew = 0 Then

      Dim i As Integer

      Dim intX = intBaseX + 2

      Dim intY = intBaseY + 2

      For i = 0 To 80

      Dim MP As New MotionPic(New Size(36, 36), _

      New Point(intX, intY))

      MP.SizeMode = PictureBoxSizeMode.StretchImage

      intX += 45

      If (i + 1) Mod 9 = 0 Then

      intY += 45

      intX = intBaseX + 2

      End If

      AddHandler MP.Click, AddressOf Ball_Click

      MPBoxes(i) = MP

      Next

      Me.Controls.AddRange(MPBoxes)

      DDScore.width = lblScore.Height / 2 – 6

      DDScore.thick = DDScore.width / 4

      DDScore.position = New Point(lblScore.Width – _

      (DDScore.width + 2) * 9, lblScore.Height / 2)

      DDTime.width = lblTime.Height / 2 – 6

      DDTime.thick = DDTime.width / 4

      DDTime.position