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

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

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

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


Fix(Flags.SND_ASYNC Or _

Flags.SND_MEMORY))

End If

End Sub

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

Public Sub PlayLoop()

loopSound = soundBytes

If (Sound.Enabled) Then

PlaySound(soundBytes, IntPtr.Zero, _

Fix(Flags.SND_ASYNC Or _

Flags.SND_MEMORY Or _

Flags.SND_LOOP))

End If

End Sub

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

Public Sub StopSound()

If (Not loopSound Is Nothing) Then

PlaySound(Nothing, IntPtr.Zero, _

0)

End If

End Sub

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

Public Sub ResumeSound()

If (Not Sound.Enabled) Then

Return

End If

If (Not loopSound Is Nothing) Then

PlaySound( _

loopSound, _

IntPtr.Zero, _

Flags.SND_ASYNC Or Flags.SND_MEMORY Or _

Flags.SND_LOOP)

End If

End Sub

End Class

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

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

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

Проектируем (или оставляем по умолчанию) эту форму, как описано в параграфе “Методика проектирования формы”.

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

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

Аналогично добавляем и встраиваем в проект второй файл win.wav типа мажорной мелодии.

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

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

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

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

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

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

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

'Объявляем объекты класса Sound для каждого звукового файла:

Dim moveSound As Sound

Dim winSound As Sound

'Создаём объект myAssembly класса System.Reflection.Assembly

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

Dim myAssembly As Assembly = Assembly.GetExecutingAssembly()

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

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

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

'Version, Culture, PublicKeyToken:

Dim myAssemblyName As AssemblyName = myAssembly.GetName()

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

'выделяем имя проекта myName_of_project типа 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

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

'Вариант 1:

'moveSound = _

' New Sound(myAssembly.GetManifestResourceStream( _

' myName_of_project + "." + "move.wav"))

winSound = _

New Sound(myAssembly.GetManifestResourceStream( _

myName_of_project + "." + "win.wav"))

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

'Вариант 2:

'moveSound = New Sound(myName_of_project + "." + "move.wav")

'winSound = New Sound(myName_of_project + "." + "win.wav")

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

'moveSound.Play()

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

winSound.Play()

End Sub

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

Теперь строки типа:

moveSound.Play()

winSound.Play()

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

Для циклического (Loop) непрерывного воспроизведения звукового файла вместо строки:

winSound.Play()

следует записать:

winSound.PlayLoop()

Далее можно экспериментировать, как описано выше в первой методике.

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

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

Рис. 6.7. Папка Sounds в панели Solution Explorer.

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

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

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

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

Отметим, что для управления воспроизведением звуковых файлов в дополнение или вместо кнопок Button (чтобы не загромождать форму Form1) можно использовать и клавиши клавиатуры, и компоненты с панели инструментов Toolbox по описанной ранее методике.