Читаем Создание игр для мобильных телефонов полностью

Класс GameCanvas реализует ряд интересных методов, которые можно применять при создании мобильных игр, например, эффективная обработка ввода, с которой вы познакомитесь в следующей главе. А пока – вы достаточно знаете для того, чтобы создавать плавную анимацию в мидлете.

Построение программы UFO

Хотя можно привести массу примеров написания программы с применением спрайтовой анимации, UFO (НЛО) – актуален всегда. Если вы когда-нибудь столкнетесь с тем, что в вашей игре чего-то не хватает, добавьте неопознанный летающий объект – это помогает всегда! В этом разделе вы научитесь использовать возможности MIDP для создания мидлета, в котором неопознанный летающий объект будет перемещаться по экрану. Пример UFO демонстрирует основы спрайтовой анимации, показывает, как применять эту методику на практике. По мере изучения материала книги вы будете знакомиться с новыми более интересными возможностями классов анимации MIDP.

Пример UFO использует спрайт НЛО, который хаотично перемещается по черному экрану. Спрайт НЛО – это изображение летающего объекта, в программе используются средства класса Sprite для изменения положения спрайта на экране. Вероятно, самый важный аспект программы UFO – это создание потока анимации, который обновляет и выводит спрайт НЛО через заданные промежутки времени. Поток анимации называется игровым циклом – это сердце и душа любой мобильной игры, в которой используется анимация.

Написание программного кода

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

private Display display;

private boolean sleeping;

private long frameDelay;

private Random rand;

private Sprite ufoSprite;

private int ufoXSpeed, ufoYSpeed;

Переменная display уже знакома вам по предыдущим примерам, она используется для работы с дисплеем. Переменная sleeping определяет, запущен ли игровой цикл. Вы можете приостановить выполнение анимации, присвоив этой переменной значение true. Переменная frameDelay тесно связана с игровым циклом, поскольку она контролирует частоту его выполнения. Если быть более точным, то эта переменная содержит число миллисекунд между итерациями цикла. Вы можете с легкостью пересчитать это число в количество фреймов, для чего нужно на него разделить 1. Например, если величина framedelay равна 40 мс (или 0.04 с), то частота кадров будет равна 25. Аналогично, вы можете преобразовать частоту кадров во временной интервал между ними, для чего нужно поделить 1 на частоту и умножить на 1000. Например:

1/30 кадр/с = 0.333333 с = 33 мс

Член-переменная класса rand – это экземпляр стандартного генератора случайных чисел MIDP, он используется для создания произвольного движения объекта по экрану. Спрайт НЛО хранится в переменной ufoSprite, которая является объектом класса Sprite. Скорость спрайта хранится отдельно от самого спрайта – в переменной ufoSpeed.

...

Совет Разработчику

С практической точки зрения, обычно лучше создавать спрайты как отдельные классы, производные от класса Sprite. Однако поскольку спрайт НЛО достаточно прост, нет необходимости создавать для него отдельный класс. Большинство спрайтов, с которыми вы столкнетесь в книге, будут созданы как отдельные классы, производные от Sprite.

Чуть раньше я упомянул, что переменная frameDelay определяет частоту кадров анимации мидлета UFO. Эта переменная инициализируется в конструкторе мидлета:

frameDelay = 33;

Возвращаясь к указанному ранее уравнению, вы можете посчитать, что этот интервал времени соответствует частоте 30 кадров/с. Если вы вспомните, о чем говорилось в начале главы, то исходя из того, что современные мобильные телефоны поддерживают такую частоту, она обеспечивает плавную анимацию. Это тот случай, когда тестирование на реальном устройстве важно. Большая часть инициализирующего кода мидлета UFO расположена в методе start(). Ниже приведена часть кода, инициализирующего спрайт:

ufoXSpeed = ufoYSpeed = 3;

try {

ufoSprite = new Sprite(Image.createImage("/Saucer.png"));

ufoSprite.setPosition(0, 0);

}

catch (IOException e) {

System.err.println("Failed loading image!");

}

Перейти на страницу:

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
Язык программирования C++. Пятое издание
Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Р'С‹ держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. Р' соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Р'. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Р–РѕР·и Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Р

Барбара Э. Му , Жози Лажойе , Стенли Б. Липпман

Программирование, программы, базы данных