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

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


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

Item, в панели Add Existing Item в окне Files of type устанавливаем All Files, в окне "Look in" находим (например, в папке с загруженным из Интернета файлом) файл и щёлкаем кнопку Add (или дважды щёлкаем по имени файла). Этот файл мы увидим в панели Solution Explorer.

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

      Аналогично добавляем и встраиваем в проект второй файл explode.wav типа взрыва. Аналогично можно добавить и встроить в проект ещё много звуковых файлов, которые мы желаем послушать во время выполнения приложения или игры.

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

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

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

      Теперь в панели Properties (для формы Form1) на вкладке Events дважды щёлкаем по имени события Load (Загрузка).

      Появляется файл Form1.vb с шаблоном метода Form1_Load, который после записи нашего кода принимает следующий вид.

      Листинг 6.12. Метод для загрузки и воспроизведения звуковых файлов.

      'Объявляем динамические массивы array типа Byte

      'для каждого звукового файла:

      Dim array_btSoundBounce() As Byte

      Dim array_btSoundExplode() As Byte

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

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

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

      Dim myAssembly As Assembly = Assembly.GetExecutingAssembly()

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

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

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

      'Version, Culture, PublicKeyToken:

      Dim myAssemblyName As AssemblyName = myAssembly.GetName()

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

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

      Dim myName_of_project As String = myAssemblyName.Name

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

      ByVal e As System.EventArgs) Handles MyBase.Load

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

      array_btSoundBounce = Sound.ReadBytesFromStream( _

      myAssembly.GetManifestResourceStream( _

      myName_of_project + "." + "bounce.wav"))

      array_btSoundExplode = Sound.ReadBytesFromStream( _

      myAssembly.GetManifestResourceStream( _

      myName_of_project + "." + "explode.wav"))

      'Воспроизводим звук удара объекта о границы формы:

      Sound.Play(array_btSoundBounce)

      'Воспроизводим звук взрыва объекта:

      'Sound.Play(array_btSoundExplode)

      End Sub

      В панели Solution Explorer выполняем правый щелчок по имени проекта и в контекстном меню выбираем Add, New Item (или Project, Add New Item). В панели Add New Item выделяем шаблон Code File, в окне Name записываем имя Sound.vb и щёлкаем кнопку Add.

      В проект (и в панель Solution Explorer) добавляется этот файл, открывается пустое окно редактирования кода, в которое записываем следующий код.

      Листинг 6.13. Файл Sound.vb.

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

      Public Class Sound

      'Константы для управления воспроизведением звукового файла:

      Const SND_SYNC = &H0

      Const SND_ASYNC = &H1

      Const SND_NODEFAULT = &H2

      Const SND_MEMORY = &H4

      Const SND_LOOP = &H8

      Const SND_NOSTOP = &H10

      'Из пространства имён System.Runtime.InteropServices

      'импортируем библиотеку winmm.dll и

      'объявляем функцию PlaySoundBytes этой библиотеки:

      Private Declare Function PlaySoundBytes _

      Lib "winmm.dll" Alias "PlaySound" (ByVal szSound() As Byte, _

      ByVal hModule As IntPtr, ByVal dwFlags As Integer) As Integer

      'Метод