Майкл Моррисон - Создание игр для мобильных телефонов
- Название:Создание игр для мобильных телефонов
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Майкл Моррисон - Создание игр для мобильных телефонов краткое содержание
Книга «Создание игр для мобильных телефонов» – это практическое руководство, которое поможет разработать и реализовать игру для мобильного телефона.
Книга написана простым языком, не содержит сложной и скучной теории программирования и шаг за шагом знакомит с методикой создания технологии «plug-and-play» применительно к созданию огромного количества игр.
В издание включены подробные описания и примеры кодов для четырех игр, а также информация, необходимая для реализации вашей собственной задумки.
Если вы любите играть в игры и занимаетесь программированием, то эта книга – для вас!
Перевод: К. Михалкин
Создание игр для мобильных телефонов - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
► анимационное изображение взрыва (рис. 18.7);
Рис. 18.7. Изображение взрыва► маленькое изображение автомобиля (рис. 18.8).
Рис. 18.8. Маленькое изображение автомобиля используется для отображения числа оставшихся жизнейЭти изображения определены самим дизайном игры, речь о котором шла ранее, поэтому здесь не должно быть ничего удивительного. Стоит отметить, что спрайты пришельцев являются анимационными (рис. 18.3—18.5), что делает героев интереснее. Другой традиционный для игр спрайт – это анимационный спрайт взрыва (рис. 18.7).
В игре Space Out используется традиционный анимационный спрайт и для изображения ракеты (рис. 18.6). Изображение содержит несколько фреймов анимации, но каждый фрейм – это отдельный тип ракеты, а не кадр анимации. Иначе говоря, фреймы изображения ракет никогда не выводятся последовательно, как в случае с обыкновенными анимационными изображениями. Напротив, каждый фрейм изображения – это отдельный тип ракеты. Четыре типа ракеты – это ракеты игрока и трех пришельцев.
Другие важные элементы игры Space Out – это счет, который необходимо вести во время игры, а также число жизней (автомобилей). Игра завершается, когда уничтожены все четыре автомобиля. Сложность игры хранится в переменной и увеличивается по мере уничтожения пришельцев игроком. Другое важное хранилище информации – это переменная булевского типа, которая отслеживает, завершена ли игра.
Итак, разработка игры привела нас к следующим важным аспектам, которыми необходимо управлять во время игры:
► число оставшихся жизней (автомобилей);
► счет;
► булевская переменная, отслеживающая окончание игры.
Эта информация отражает ядро игровых данных, которые необходимо отслеживать во время игры. Помните, что игровые спрайты – очень важный компонент состояния игры. Зная это, вы можете перейти к проработке кода игры Space Out. Так же, как и игра High Seas, созданная в главе 12, игра Space Out потребует значительных сил, но труд будет вознагражден! Вы увидите!
Реализация игры
Структура игры аналогична структуре игр, разработанных ранее. В следующих разделах вы разработаете код и ресурсы игры.
Создание движущихся спрайтов
Разработку игры Space Out начнем с создания нового класса спрайтов, который будет использоваться в игре для реализации движущихся спрайтов. Этот класс MovingSprite аналогичен классу DriftSprite из главы 12 за исключением того, что в первом будут использоваться компоненты X и Y скорости, а также обрабатываться столкновения спрайта со стенкой экрана.
Любой спрайт в итоге может достичь края экрана, и в этом случае возможны несколько вариантов. Например, в игре Pong спрайт, достигающий границы экрана, отскакивает от нее. В игре Asteroids при достижении границы экрана спрайт может появиться у противоположной стороны. В некоторых играх спрайт просто замирает или уничтожается (скрывается). Все эти возможности реализует класс MovingSprite. Давайте перечислим эти возможности снова:
► скрыться– сокрытие спрайта по достижении им края экрана;
► переместиться– при достижении спрайтом края экрана он появляется у противоположного края;
► оттолкнуться– по достижении спрайтом границы экрана направление его движения изменяется на противоположное;
► остановиться– если спрайт достигает края экрана, он останавливается.
Все эти случаи реализуются константами класса MovingSprite. Ниже приведены константы и переменные этого класса:private int xSpeed, ySpeed;
private int action;
private Canvas canvas;
public static final int BA_HIDE = 1; //Эти константы описывают различные действия на границах игрового поля при перемещении спрайтов
public static final int BA_WRAP = 2;
public static final int BA_BOUNCE = 3;
public static final int BA_STOP = 4;Переменные xSpeed и ySpeed хранят соответствующие компоненты скорости спрайта, которые измеряются в пикселях за один игровой цикл. Переменная action содержит код действия, выполняемого по достижении спрайтом границы экрана – значение одной из констант класса. Поэтому каждый движущийся спрайт по достижении края экрана должен остановиться, появиться у другого края экрана, оттолкнуться или скрыться.
Граница экрана определяется переменной canvas, которая хранит холст, на котором выводится спрайт. Цель этой переменной – создать прямоугольную границу, ограничивающую движения спрайта. Иначе говоря, размеры переменной canvas служат размерами области, в которой может перемещаться спрайт – движение вне области невозможно.
Переменные класса MovingSprite инициализируются конструктором MovingSprite (листинг 18.1).
Листинг 18.1. Конструктор класса MovingSprite создает как анимационный, так и неанимационный спрайтpublic MovingSprite (Image image, int xMoveSpeed, Int yMoveSpeed,
int boundsAction, Canvas parentCanvas) {
super(image); //Вызов родительского конструктора Sprite()
// скорость XY
xSpeed = xMoveSpeed;
ySpeed = yMoveSpeed;
// действие при достижении границы экрана
action = boundsAction;
// родительский холст
canvas = parentCanvas;
}
public MovingSprite(Image image, int frameWidth, int frameHeight, int xMoveSpeed,
int yMoveSpeed, int boundsAction, Canvas parentCanvas) {
super(image, frameWidth, frameHeight); //Вызов родительского анимационного конструктора Sprite()
// скорости XY
xSpeed = xMoveSpeed;
ySpeed = yMoveSpeed;
// действие при достижении границы экрана
action = boundsAction;
// родительский холст
canvas = parentCanvas;
}В классе MovingSprite реализованы два конструктора – для создания анимационного и обычного спрайтов. Оба конструктора вызывают конструктор родительского метода Sprite(), который создает ядро спрайта, после чего выполняется инициализация специфических переменных класса. В отличие от класса DriftSprite, разработанного в главе 12, метод update() в классе MovingSprite удивительно прост:
public void update() {
// Move the sprite based on its speed
move(xSpeed, ySpeed);
// Check for a collision with the screen boundary
checkBounds();
}Сначала метод update() перемещает спрайт на основании текущей скорости, хранящейся в целочисленных переменных xSpeed и ySpeed. Метод завершается проверкой, находится ли спрайт внутри границ. Это выполняется методом checkBounds(), код которого приведен в листинге 18.2. Листинг 18.2. Метод checkBounds() проверяет столкновение спрайта с границей экрана и в случае столкновения выполняет соответствующие действия
private void checkBounds() {
// спрятать спрайт при необходимости
if (action == BA_HIDE) { //Спрятать спрайт при ударении о границу экрана
if (getX() < 0 || getX() > (canvas.getWidth() – getWidth()) ||
getY() < 0 || getY() > (canvas.getHeight() – getHeight()))
setVisible(false);
}
// переместить спрайт к противоположному краю экрана
else if (action == BA_WRAP) { //При достижении границы экрана спрайтом переместить спрайт к противоположному краю
//Wrap the sprite around the edges of the screen
if (getX() < -getWidth())
setPosition(canvas.getWidth(), getY());
else if (getX() > canvas.getWidth())
Читать дальшеИнтервал:
Закладка: