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

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


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

применяются несколько звуковых файлов, то их целесообразно разместить в одной папке с именем, например, 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,