banner banner banner
Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта
Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 4: Программирование на Visual Basic искусственного интеллекта
Оценить:
Рейтинг: 0

Полная версия:

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

скачать книгу бесплатно


btRetVal = New Byte(strBytes.Length) {}

strBytes.Read(btRetVal, 0, Fix(strBytes.Length))

Return btRetVal

End Function

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

Public Shared Sub Play(ByRef btBytes() As Byte)

PlaySoundBytes(btBytes, IntPtr.Zero, _

SND_ASYNC Or SND_MEMORY)

End Sub

End Class

Этот файл Sound.vb можно использовать во многих приложениях и играх для воспроизведения звуковых файлов, добавляя его в проект по стандартной схеме Project, Add Existing Item.

В режиме выполнения (Build, Build Selection; Debug, Start Without Debugging) мы услышим соответствующее (одноразовое) воспроизведение звукового файла, который мы добавили или непосредственно в проект, или в нашу дополнительную папку Sounds проекта.

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

Теперь для воспроизведения звуков в приложениях и играх только для настольных компьютеров опишем методику на основе технологии DirectX, точнее, её компонента DirectSound в виде одноименного пространства имён Microsoft.DirectX.DirectSound. Сейчас, применительно к начальным главам по двухмерным играм, эту очень мощную методику мы опишем кратко, а более подробно эта методика будет описана в конце книги для трёхмерных игр.

Приступим к программной реализации воспроизведения звуковых файлов, для общности, в новом проекте.

Для создания проекта в VS щёлкаем кнопку New Project (или File, New, Project). В панели New Project в окне Project Types выбираем тип проекта Visual Basic, Windows, в окне Templates выделяем шаблон Windows Forms Application, в окне Name записываем любое имя проекта и щёлкаем OK. Создаётся проект, появляется форма Form1 (рис. 6.10) в режиме проектирования.

Рис. 6.10. Форма Form1 в режиме выполнения.

Проектируем (или оставляем по умолчанию) эту форму, как описано в параграфе “Методика проектирования формы”. Например, в панели Properties в свойстве Font оставляем по умолчанию или устанавливаем новый шрифт и его размер (Size). Чтобы изменить заголовок формы, в панели Properties в свойстве Text записываем (или вставляем из буфера обмена: правый щелчок, Paste) текст.

На форме размещаем (с панели Toolbox), для примера, две кнопки Button (Sound 1 и Sound 2). В панели Properties в свойстве Text записываем название каждой кнопки Sound &1 и Sound &2 с оператором &, который подчёркивает следующий за ним символ текста, что позволяет нам задействовать кнопку не только мышью, но и, удерживая нажатой клавишу Alt, нажатием клавиши с подчёркнутой буквой английского алфавита или цифрой (например, Alt+1).

На форме в режиме выполнения по умолчанию выделена первая кнопка. Но если мы желаем, чтобы в режиме выполнения на форме была выделена другая кнопка (чтобы нажимать её не только мышью, но и клавишей Enter), то в панели Properties (для Form1) в свойстве AcceptButton выбираем имя этой кнопки.

По варианту 1, для добавления звукового файла drumpad-crash.wav в проект, в меню Project выбираем Add Existing Item, в панели Add Existing Item в окне Files of type устанавливаем All Files, в окне "Look in" находим (в системной папке компьютера C, WINDOWS, Media или, например, в папке с загруженным из Интернета файлом) файл и щёлкаем кнопку Add (или дважды щёлкаем по имени файла). Этот файл мы увидим в панели Solution Explorer. Если мы дважды щёлкнем по этому файлу drumpad-crash.wav, то откроется проигрыватель Windows Media Player, и мы услышим в течение нескольких секунд звучание типа шуршания оркестровых металлических тарелок при воздействии на них металлической метелки.

Аналогично добавляем в проект второй файл drumpad-bass_drum.wav типа удара барабана.

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

По второму, закомментированному далее в программе, варианту эти файлы мы не добавляем в проект, а копируем во внешнюю папку с именем, например, Sounds, запоминая путь к этой папке, начиная от локального диска, например, D.

В проекте создаём ссылку на тот компонент DirectX, который потребуется для приложения. Для этого в меню Project выбираем Add Reference, а в панели Add Reference на вкладке (.NET) – компонент Microsoft.DirectX.DirectSound и щёлкаем OK. Если в панели Add Reference пользователь не увидит компонента Microsoft.DirectX.DirectSound, то ему следует с сайта корпорации Microsoft бесплатно загрузить последнюю версию DirectX SDK и стандартно установить на свой компьютер.

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

Imports Microsoft.DirectX.DirectSound

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

Теперь в любом месте класса Form1 записываем следующий универсальный (для всех последующих приложений и игр) код для инициализации DirectX.

Листинг 6.14. Универсальный код.

'Параметр устр-ва в виде панели визуализации renderWindow

'класса Control из пространства имён System.Windows.Forms:

Dim renderWindow As Control

'Добавляем переменные для воспроизведения звуков:

'Устройство DeviceOfSound класса Device из DirectSound:

Dim DeviceOfSound As Microsoft.DirectX.DirectSound.Device

'Класс вторичного буфера SecondaryBuffer

'для нескольких звуковых объектов-файлов:

Dim mySound1 As SecondaryBuffer ' = Nothing по умолчанию.

Dim mySound2 As SecondaryBuffer ' = Nothing по умолчанию.

'Инициализируем и устанавливаем параметры DirectX:

Public Function InitializeDirectX() As Boolean

Try

'renderWindow связываем с this формой (или эл-м):

renderWindow = Me

'Создаём и инициализируем переменные для звука:

'Устройство DeviceOfSound класса Device из DirectSound:

DeviceOfSound = _

New Microsoft.DirectX.DirectSound.Device()

'Уровень доступа к устройству – многозадачный Normal:

DeviceOfSound.SetCooperativeLevel(renderWindow, _

CooperativeLevel.Normal)

'Инициализация DirectX прошла успешно:

Return True

Catch

'Перехвачена ошибка инициализации DirectX:

Return False

End Try

End Function 'Конец метода InitializeDirectX.

Напомним, что именно этот универсальный код можно будет копировать и записывать в наши последующие приложения и игры (после нашего напоминания).

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

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