За каждый уничтоженный томат начисляется 10 очков. Эти данные постоянно обновляются и выводятся на экран.
Звуковые эффекты
Неплохо
бы добавить в игру звуковые эффекты. К сожалению, библиотека .NET Compact Framework пока не поддерживает воспроизведение звуковых файлов при помощи управляемого кода. Поэтому придется воспользоваться механизмом Platform Invoke (P/Invoke). В главе, посвященной вызовам функций Windows API, эта тема будет освещаться подробнее
Для воспроизведения звуков можно встроить звуковой файл в саму программу, как это делалось с изображениями, либо проигрывать сам звуковой файл, который расположен где-то в файловой системе.
В этом проекте требуется создать отдельный класс для воспроизведения звуков. Нужно щелкнуть правой кнопкой мыши на проекте
Bouncer
в окне
Solution Explorer
и выполнить команду контекстного меню
Add►New Item...
В открывшемся окне нужно выбрать элемент
Class
и задать имя
Sound.cs
. После нажатия кнопки
Add
новый класс будет добавлен в проект.
Класс
Sound
будет иметь два метода. Один метод создает экземпляр класса
Sound
, читая данные из заданного файла. Второй метод предназначен для проигрывания звука. Также в составе класса будет находиться свойство, позволяющее настраивать громкость звука.
В начале файла
Sound.cs
надо расположить строки для подключения используемых пространств имен, как показано в листинге 11.36.
Листинг 11.36
using System.Runtime.InteropServices;
using System.IO;
Наш пример со звуком просто хранит в памяти байтовый массив с аудиоматериалом. Для обращения к этому блоку используется функция операционной системы, способная производить звуки. В классе
Sound
блок памяти объявляется так, как показано в листинге 11.37.
Листинг 11.37
/// <summary>
/// массив байтов, содержащий данные о звуке
/// </summary>
private byte[] soundBytes;
Эта конструкция не создает массив, а только объявляет его. Массив будет создан при конструировании экземпляра класса, ведь изначально размер звукового файла неизвестен.
Код конструктора приведен в листинге 11.38.
Листинг 11.38
/// <summary>
/// Создание экземпляра sound и хранение данных о звуке
/// </summary>
/// <param name="soundStream">поток для чтения звука</param>