msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/gamesprogwithcheese.asp. Автор игры Роб Майлз (Rob Miles) написал четыре большие статьи об этой игре, которая использует в качестве игровых объектов кусочки сыра, батон хлеба и яблоки. Интересно, что сначала статьи писались о версии игры для .NET Compact Framework 1.0 для смартфонов под управлением Windows Mobile 2003 с использованием Visual Studio .NET 2003. Но к настоящему моменту игра была переписана для смартфонов под управлением Windows Mobile 5.0.
К слову сказать, когда я читал эти статьи в 2004 году, у меня еще не было смартфона. И тогда я переписал игру для своего карманного компьютера, чтобы поиграть в аркаду на настоящем устройстве.
Автор шаг за шагом раскрывает перед программистом тонкости процесса разработки игры, начиная с создания пустого проекта и заканчивая написанием полноценной игровой модели. Роб Майлз любезно разрешил использовать исходный код игры на страницах книги, а в архиве программ вы найдете установочный файл, содержащий исходные коды игры. Когда вы запустите установочный файл, то программа установки скопирует файлы с примерами в папку C:Program FilesWindows Mobile Developer SamplesGames Programming With Cheese Part 1
. В этом каталоге будут расположены еще семь папок с проектами, которые шаг за шагом ведут программиста к написанию игры.
Так как сама статья написана на английском языке, то придется приложить некоторые усилия для понимания текста. Но автор так понятно и доходчиво объясняет материал, сопровождая его иллюстрациями и строчками кода, что разобраться в нем сможет даже начинающий программист.
Начало работы
Итак, прежде всего нужно создать новый проект для смартфона под управлением Windows Mobile 5.0 с использованием платформы .NET Compact Framework 2.0. Этот проект должен получить имя Bouncer
.
Добавление изображения в программу
Наше приложение будет использовать графические изображения. Картинки, используемые в игре, хранятся в файле самой программы в виде ресурсов. Сначала надо подготовить сами рисунки для игры. Автор программы решил использовать для игры различные виды продуктов.
Возьмем, к примеру, изображение кусочка сыра. Файл с изображением сыра надо скопировать в папку, в которой хранятся файлы проекта. Затем следует щелкнуть правой кнопкой мыши на названии проекта Bouncer
в окне Solution Explorer
, выбрать пункт контекстного меню Add
, а затем перейти к пункту подменю Add Existing Item
. В диалоговом окне Add Existing Item
надо выбрать файл cheese.gif
. После этого остается нажать кнопку Add
. Картинка теперь добавлена в проект, но еще не является частью программы.
Необходимо указать, что графический файл будет храниться в виде встроенного ресурса. Нужно щелкнуть правой кнопкой мыши на значке графического файла в окне Solution Explorer
и выполнить команду контекстного меню Properties
. В разделе Build Action
по умолчанию используется пункт Content
. Но в данном случае нужно указать пункт Embedded Resource
.
Теперь картинка является частью сборки, и для распространения программы нам понадобится единственный исполняемый файл, в котором будут содержаться все необходимые изображения.
Использование встроенных ресурсов
При работе программы необходимо получить доступ к графическому файлу из ресурсов и вывести изображение на экран. Для этого сначала необходимо получить ссылку на сборку. Соответствующий код приведен в листинге 11.1.
// Получим ссылку на сборку
System.Reflection.Assembly execAssem =
System.Reflection.Assembly.GetExecutingAssembly();
Метод System.Reflection.Assembly.GetExecutingAssembly
возвращает сборку, из которой выполняется текущий код. Получив в программе ссылку на сборку, можно получить доступ к встроенным ресурсам, в том числе к изображению сыра. Метод GetManifestResourceStream
позволяет извлекать указанный ресурс из сборки. Для этого нам надо указать имя файла и название пространства имен. В нашем случае это будет Bouncer.cheese.gif
, как показано в листинге 11.2.
/// <summary>
/// Изображение сыра
/// </summary>
private Image cheeseImage = null;
public Form1() {
InitializeComponent();
// Получим ссылку на сборку
System.Reflection.Assembly execAssem =
System.Reflection.Assembly.GetExecutingAssemblу();
// Получим доступ к картинке с сыром
cheeseImage = new System.Drawing.Bitmap(
execAssem.GetManifestResourceStream(@'Bouncer.cheese.gif');
}
Вывод картинки на экран
При запуске программа загружает из ресурсов картинку. Теперь надо вывести изображение на экран. Для этого нужно воспользоваться событием Paint
, как показано в листинге 11.3.
private void Form1_Paint(object sender, PaintEventArgs e) {