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

Шрифт
Фон

Ниже размещаем четвёртую надпись Label. В панели Properties (для этого элемента) в свойстве Location устанавливаем координаты верхнего левого угла элемента 430; 302, в свойстве Name изменяем имя на lblTime, в свойстве Font увеличиваем размер шрифта до 28, в свойстве Text записываем Время: (с пробелами для вывода секунд, минут и часов в эти пробелы).

Ниже размещаем пятую надпись Label. В панели Properties (для этого элемента) в свойстве Location устанавливаем координаты верхнего левого угла элемента 430; 392, в свойстве Name изменяем имя на lblBallPreview, в свойстве Font увеличиваем размер шрифта до 28, в свойстве Text записываем Следующие мячи:.

Ниже размещаем первый графический элемент управления PictureBox. В панели Properties (для этого элемента) в свойстве Location устанавливаем координаты верхнего левого угла элемента 453; 477, в свойстве Size устанавливаем размеры 52; 52, в свойстве Name изменяем имя на picBallPre1.

Правее размещаем второй элемент PictureBox. В панели Properties (для этого элемента) в свойстве Location устанавливаем координаты верхнего левого угла элемента 510; 477, в свойстве Size устанавливаем размеры 52; 52, в свойстве Name изменяем имя на picBallPre2.

Правее размещаем третий элемент PictureBox. В панели Properties (для этого элемента) в свойстве Location устанавливаем координаты верхнего левого угла элемента 568; 477, в свойстве Size устанавливаем размеры 52; 52, в свойстве Name изменяем имя на picBallPre3.

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

Чтобы после начала игры на форме шел отсчёт времени (Time), на форму переносим второй таймер Timer. В панели Properties (для этого таймера) в свойстве Name записываем имя tmr2, в свойстве Enabled оставляем заданное по умолчанию значение False, а в свойстве Interval задаём 1000 миллисекунд (равные 1 секунде).

Если в игре применяются звуковые файлы, то их целесообразно разместить в одной папке с именем, например, Sounds. Для добавления в проект этой папки, в панели Solution Explorer выполняем правый щелчок по имени проекта, в контекстном меню выбираем Add, New Folder, в поле появившегося значка папки записываем имя папки и нажимаем клавишу Enter.

Добавляем в эту папку звуковые файлы drumpad-crash.wav и win.wav по стандартной схеме: выполняем правый щелчок по имени этой папки, в контекстном меню выбираем Add, Existing Item, в панели Add Existing Item в окне Files of type выбираем All Files, в центральном окне находим (например, в папке с загруженными из Интернета файлами) и с нажатой клавишей Ctrl выделяем имена файлов и щёлкаем кнопку Add. В панели Solution Explorer мы увидим эти файлы (рис. 21.13). В панели Properties свойства этих файлов оставляем заданными по умолчанию.





Рис. 21.13. Панель Solution Explorer. Рис. 21.14. Панель Properties.

Добавляем в проект графические файлы по стандартной схеме: в панели Solution Explorer выполняем правый щелчок по имени проекта, в контекстном меню выбираем Add, Existing Item (или Project, Add Existing Item), в панели Add Existing Item в окне Files of type выбираем All Files, в центральном окне находим (например, в папке с загруженными из Интернета файлами) и с нажатой клавишей 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 = New Point(lblTime.Width _

(DDTime.width + 2) * 9, lblTime.Height / 2)

AddHandler lblScore.Paint, AddressOf LabelScore_Paint

lblScore.Refresh()

AddHandler lblTime.Paint, AddressOf LabelTime_Paint

lblTime.Refresh()

For i = 0 To 2

prePic(i) = New PictureBox

prePic(i).SizeMode = PictureBoxSizeMode.StretchImage

prePic(i).Size = New Size(16, 16)

prePic(i).Visible = False

Me.Controls.Add(prePic(i))

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке