Разработка детской игры для мобильных устройств

Отчет по практике - Компьютеры, программирование

Другие отчеты по практике по предмету Компьютеры, программирование

? компьютерной архитектуры. Дата официального выпуска - 23 мая 1995 года.

Достоинство подобного способа выполнения программ - в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:

применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,

широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,

аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и большее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C.

Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.

Последним релизом является версия 1.6, в которой было произведено улучшение системы безопасности, улучшение поддержки XML, а также добавлена поддержка скриптового языка JavaScript на основе механизма Mozilla Rhino, улучшена интеграция с рабочим столом, добавлены некоторые новые возможности в создании графических интерфейсов.

 

.3 Реализация проекта

 

.3.1 Eclipse

В качестве среды разработки был выбран бесплатный продукт Eclipse IDE. - свободная интегрированная среда разработки модульных кроссплатформенных приложений. Развивается и поддерживается Eclipse Foundation.

Рисунок 2 - Интерфейс Eclipse IDE.

 

Так выглядит Project Explorer, позволяющий просматривать проекты и содержащиеся в нем пакеты, а так же непосредственно править исходный код.

 

.3.2 Android + AndEngine + Box2D

За то, что видит пользователь на экране в Android отвечают Activities. На рисунке ниже представлена первая activity, исполняющая роль главного меню.

Рисунок 3 - Главное меню.

 

Данный экран хоть и используется в качестве меню, но может включать в себя абсолютно любые элементы. На нем может быть задействована любая анимация, в том числе с использованием объектов взаимодействующих по законам физики.

При создание приложения был использован framework AndEngine а так же физический движок Box2D.

Основой в AndEngine являются так называемые сцены (Scene).

Загрузку сцены можно разделить на несколько этапов:

Загрузка движка - инициализация камеры сцены и создание самого двигателя сцены. Пример кода:

@OverrideEngine onLoadEngine() {

/* Создание камеры */.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);

/* Инициализация движка */new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));

}

Загрузка ресурсов - инициализация и загрузка всех необходимых ресурсов сцены - изображения, шрифты, анимация и прочее. Пример кода:

@Overridevoid onLoadResources() {

/* Загрузка шрифта и текстур. */.mFontTexture = new Texture(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);.setAssetBasePath("font/");.mFont = FontFactory.createFromAsset(this.mFontTexture, this, "Droid.ttf", 48, true, Color.WHITE);.mEngine.getTextureManager().loadTexture(this.mFontTexture);.mEngine.getFontManager().loadFont(this.mFont);

}

Загрузка сцены - в этот момент происходит создание всех объектов и задании логики поведения сцены, например - создание 3х объектов: персонажа, дерева и яблока и указание логики их взаимодействия (дерево реагирует на удары, яблоко реагирует на состояние дерева). Пример кода:

@OverrideScene onLoadScene() {

/* Измерение FPS */.mEngine.registerUpdateHandler(new FPSLogger());

/* Создание меню */.mMenuScene = this.createMenuScene();

/* Установка фона */.mMainScene = new Scene();.mMainScene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));

/* Установка меню */.mMainScene.setChildScene(this.mMenuScene, false, true, true);

return this.mMainScene; }

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

Физический движок Box2D позволяет производить огромное количество физических расчетов. В моем приложение используется стандартная земная гравитация. Персонаж движется с ускорением по законам физики. Событие Collide (столкновение) позволяет обрабатывать столкновения объектов, на чем и основано взаимодействие персонажа с деревом.

&n