Чтение онлайн

ЖАНРЫ

Программирование КПК и смартфонов на .NET Compact Framework

Климов Александр Петрович

Шрифт:

Directory.Exists("\\temp");

Это выражение возвращает значение

True
, если папка
temp
существует. Добавим в предыдущее выражение символ обратной черты.

Directory.Exists("\\temp\\")

Теперь данный метод возвратит

False
, даже если папка существует. На устройствах под управлением Windows Mobile 5.0 платформа .NET Compact Framework исправила это противоречие, и теперь метод
Directory.Exists
возвращает
True
вне зависимости от наличия замыкающего обратного слэша.

Метод Bitmap.Save

На

старых устройствах также отсутствовали конвертеры графических изображений, что не позволяло сохранять изображения в форматах GIF, JPG или PNG. Разработчикам приходилось довольствоваться только форматом BMP. Причем при написании программы среда разработки позволяла писать неправильный код, выводя соответствующие подсказки. Однако при вызове этого метода программа выводила сообщение об ошибке. В Windows Mobile 5.0 теперь поддерживаются все четыре формата.

Глава 11

Создание игр

Игры на мобильных устройствах

Создание игр — одно из самых любимых занятий для программистов. При создании новой игры автору приходится быть и художником, и композитором, и дизайнером, и бухгалтером. Естественно, в данном случае речь идет о программисте-одиночке. Разработка игр для мобильных устройств не требует больших финансовых затрат, которые имеют место при создании игр для настольных компьютеров крупными компьютерными фирмами. На мой взгляд, карманные компьютеры идеально подходят для логических и аркадных игр, с помощью которых можно скоротать время во время путешествия, долгого ожидания в очередях или при поездке на работу.

Рис. 11.1. Раздел MSDN, посвященный играм

Если в вашей коллекции уже есть игры для настольных компьютеров, написанные с использованием .NET Framework, то в большинстве случаев вам не составит труда портировать их для мобильных устройств. Я хочу познакомить вас с играми, которые уже написаны для КПК и смартфонов. Надо сказать, что существует определенная категория программистов, которые не читают документацию и ищут материалы по заданной теме в книгах и на сайтах. Но это не самое правильное поведение. Компания Microsoft очень часто размещает примеры написания игр в своих справочных системах. Очень много статей на тему разработки игр можно найти в MSDN. В этой коллекции статей и документации есть целый раздел, посвященный созданию игр, под названием «Graphics, Audio and Gaming» (рис. 11.1).

Продуктовая аркада

Для начала имеет смысл рассмотреть игру Bouncer, которую можно найти на веб-странице по адресу 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 Files\Windows Mobile Developer Samples\Games 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.

Листинг 11.1

// Получим ссылку на сборку

System.Reflection.Assembly execAssem =

 System.Reflection.Assembly.GetExecutingAssembly;

Метод

System.Reflection.Assembly.GetExecutingAssembly
возвращает сборку, из которой выполняется текущий код. Получив в программе ссылку на сборку, можно получить доступ к встроенным ресурсам, в том числе к изображению сыра. Метод
GetManifestResourceStream
позволяет извлекать указанный ресурс из сборки. Для этого нам надо указать имя файла и название пространства имен. В нашем случае это будет
Bouncer.cheese.gif
, как показано в листинге 11.2.

Поделиться с друзьями: