Чтение онлайн

на главную - закладки

Жанры

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

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

Переносим таймер Timer. В панели Properties (для этого невидимого на форме компонента) в свойстве Name записываем timerGame, в свойстве Enabled выбираем True, а свойству Interval задаём значение 40 миллисекунд, что соответствует 25 кадрам в секунду по стандарту телевещания России.

Теперь добавляем в проект графические файлы по обычной схеме: в панели Solution Explorer выполняем правый щелчок по имени проекта, в контекстном меню выбираем Add, Existing Item (или Project, Add Existing Item),

в панели Add Existing Item в окне “Files of type” выбираем “All Files”, в центральном окне находим (например, в папке с загруженными из Интернета файлами) и с нажатой клавишей Ctrl выделяем файлы и щёлкаем кнопку Add, чтобы после этого добавления в панели Solution Explorer были файлы, показанные на рис. 22.9.

В панели Solution Explorer выделяем все графические файлы (с нажатой клавишей Ctrl), а в панели Properties в свойстве Build Action (Действие при построении) вместо заданного по умолчанию выбираем значение Embedded Resource (Встроенный ресурс) для всех этих файлов.

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

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

Рис. 22.10. Форма Form1 в режиме проектирования. Рис. 22.11. Панель Solution Explorer.

22.4. Код и запуск программы

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

Imports System.Reflection 'Для класса Assembly.

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

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

'–

'Offsets on form where we should draw the playfield

'–

Const GAME_SCREEN_DX = 2

Const GAME_SCREEN_DY = 1

'Current playfield

Private m_playfieldManager As PlayFieldManager

'Gfx object of the form that we will render the playfield to

Dim m_myFormsGraphics As Graphics

'–

'Does the things we need to get get a round running

'–

Sub InitializeNewLevel

'Add a game event handler to get updates on the game

AddHandler m_playfieldManager.GameStateChanged, _

AddressOf GameEventOccured

'Start the game

timerGame.Enabled = True

ButtonNextLevel.Visible = False

'–

'Give the text-box focus so we can get keyboard events

'–

TextBox1.Focus

End Sub

'–

'Starts a new game

'–

Sub StartGame

'Мелодия

начала игры с ожиданием окончания мелодии:

'My.Computer.Audio.Play("..\..\Sounds\drumpad-crash.wav", _

' AudioPlayMode.WaitToComplete)

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

My.Computer.Audio.Play("..\..\Sounds\drumpad-crash.wav")

'–

'Create Graphics object and cache it

'–

If (m_myFormsGraphics Is Nothing) Then

m_myFormsGraphics = Me.CreateGraphics

End If

'–

'Create the playfield level we want to start on

'–

m_playfieldManager = New Playfield_Level2

'–

'Start the level running

'–

InitializeNewLevel

End Sub

Sub PictureBoxPlayField_MouseDown( _

ByVal sender As System.Object, _

ByVal e As System.Windows.Forms.MouseEventArgs)

'If Hank's around, give him a new destination

'If Not (m_HankTheWonderCaveMan Is Nothing) Then

If Not (m_playfieldManager Is Nothing) Then

m_playfieldManager.HankTheWonderCaveman. _

setHanksDestination(e.X, e.Y)

End If

End Sub

'–

'This event-sink is to get called when a game event occurs

'–

Sub GameEventOccured(ByVal gameUpdateMessage As _

PlayFieldManager.GameUpdate)

'The level was completed succesfully

If (gameUpdateMessage = PlayFieldManager.GameUpdate. _

levelSuccesfullyCompleted) Then

ButtonNextLevel.Visible = True

End If

End Sub

'Загружаем в проект файлы изображений по такой схеме:

'Создаём объект myAssembly класса Assembly и присваиваем ему

'ссылку на исполняемую сборку нашего приложения:

Public myAssembly As Assembly = Assembly.GetExecutingAssembly

'Создаём объект myAssemblyName

'класса System.Reflection.AssemblyName и присваиваем ему

'имя сборки, которое состоит из имени проекта,

'Version, Culture, PublicKeyToken:

Public myAssemblyName As AssemblyName = myAssembly.GetName

'Из имени сборки при помощи свойства Name

'выделяем имя проекта типа string:

Public myName_of_project As String = myAssemblyName.Name

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

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

На границе империй. Том 6

INDIGO
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
На границе империй. Том 6

Возмездие

Злобин Михаил
4. О чем молчат могилы
Фантастика:
фэнтези
7.47
рейтинг книги
Возмездие

Маяк надежды

Кас Маркус
5. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Маяк надежды

Невеста

Вудворт Франциска
Любовные романы:
любовно-фантастические романы
эро литература
8.54
рейтинг книги
Невеста

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII

Береги честь смолоду

Вяч Павел
1. Порог Хирург
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Береги честь смолоду

Соль этого лета

Рам Янка
1. Самбисты
Любовные романы:
современные любовные романы
6.00
рейтинг книги
Соль этого лета

Неправильный лекарь. Том 1

Измайлов Сергей
1. Неправильный лекарь
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неправильный лекарь. Том 1

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Попаданка в семье драконов

Свадьбина Любовь
Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.37
рейтинг книги
Попаданка в семье драконов

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Я не Монте-Кристо

Тоцка Тала
Любовные романы:
современные любовные романы
5.57
рейтинг книги
Я не Монте-Кристо

Довлатов. Сонный лекарь 3

Голд Джон
3. Не вывожу
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Довлатов. Сонный лекарь 3

Неудержимый. Книга XIII

Боярский Андрей
13. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XIII