Майкл Моррисон - Создание игр для мобильных телефонов стр 31.

Книгу можно купить на ЛитРес.
Всего за 239 руб. Купить полную версию
Шрифт
Фон

...

В копилку Игрока

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

Популярность игры Frogger привела к тому, что по ее подобию был создан ряд игр в надежде на успех. Одна из этих игр называется Freeway, в ней цыпленок должен был перейти через загруженное шоссе. Freeway была создана компанией Activision для игровой системы Atari 2600, которая была первой игровой консолью, достигшей большого успеха на рынке. Как обладатель и поклонник игры Freeway я подумал, что было бы неплохо создать в этой главе ее аналог. Игра будет называться Henway.

В отличие от Frogger в игре Henway главным героем является цыпленок, которому во что бы то ни стало необходимо перебраться на другую сторону шоссе. Также, в отличие от Frogger, в этой игре цыпленка необходимо перевести из левой половины экрана в правую. Экран выглядит приблизительно так, как показано на рис. 7.1.

Майкл Моррисон - Создание игр для мобильных телефонов

Рис. 7.1. Игра Henway состоит из старта, шоссе и финиша, а также спрайтов цыпленка и автомобилей

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

...

В копилку Игрока

Обратите внимание, что все рассматриваемые в книге примеры очень просты. Хотя есть множество способов усовершенствовать игры, я к этому не стремлюсь, оставляя вам поле для деятельности. Моя цель – показать простой для понимания, работающий пример мобильной игры, которую вы сможете дополнить интересными для вас деталями. В конце большинства глав я подкину вам несколько идей, как сделать игры более привлекательными.

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

Анализ игры

Обзор игры, приведенный чуть ранее, уже определил некоторые элементы игры, даже если вы этого и не заметили. Например, вы уже догадались, сколько спрайтов нужно для игры? В игре будет пять спрайтов: четыре автомобиля и цыпленок. Но можно и увеличить число автомобилей, чтобы усложнить игру, однако в этом примере будет лишь четыре машины.

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

► фоновое изображение шоссе;

► изображение цыпленка (рис. 7.2);

Майкл Моррисон - Создание игр для мобильных телефонов

Рис. 7.2. Изображение цыпленка состоит из двух фреймов, на которых цыпленок идет вправо

► четыре изображения автомобилей (рис. 7.3);

Майкл Моррисон - Создание игр для мобильных телефонов

Рис. 7.3. Все изображения автомобилей ориентированы вертикально, потому что они будут перемещаться вверх или вниз

► маленькое изображение головы цыпленка (рис. 7.4).

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

Рис. 7.4. Маленькая голова цыпленка символизирует число оставшихся жизней

Вы, вероятно, посчитали все эти изображения за исключением последнего. Маленькое изображение головы цыпленка используется, чтобы сообщить игроку, сколько жизней осталось. Например, в начале игры в нижнем правом углу экрана отображаются три маленьких головы цыпленка. Если цыпленок погибает под колесами автомобиля, то число жизней уменьшается на одну; игра продолжается до тех пор, пока хоть один цыпленок жив.

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

Есть еще одна переменная, о необходимости которой можно сказать, прежде чем приступить к разработке и тестированию. Я говорю о задержке считывания ввода, эта величина поможет улучшить реакцию на пользовательский ввод. Если в каждом игровом цикле будет реакция на нажатия клавиш, то цыпленок будет перемещаться по экрану с неимоверной скоростью. Чтобы ограничить скорость его перемещения и понизить частоту обработки ввода, вы можете ввести специальную переменную и проверять нажатые клавиши, например, на каждом третьем игровом цикле.

...

В копилку Игрока

Точно определить задержку ввода нельзя, ее можно установить методом проб и ошибок, поэтому вы можете подобрать любое значение. Главное, чтобы обработка пользовательского ввода производилась на частоте, близкой к частоте нажатий клавиш игроком. Также помните, что величина задержки обработки пользовательского ввода может изменяться от одной игры к другой в зависимости от аппаратных ресурсов и скорости выполнения мидлета.

Давайте подведем итог. Первоначальная разработка игры Henway говорит о том, что в процессе игры мы должны управлять следующими элементами:

► числом жизней цыплят;

► счетом;

► булевской переменной окончания игры;

► переменной задержки пользовательского ввода.

Помня об этом, вы готовы перейти дальше к разработке кода игры Henway.

Разработка игры

Я надеюсь, что к настоящему моменту вы поняли, из чего состоит игра Henway. В следующих разделах речь пойдет о разработке кода этого мидлета. Это достаточно просто, поскольку большая часть кода основана на рассмотренных ранее примерах.

Написание кода

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

private Display display;

private boolean sleeping;

private long frameDelay;

private int inputDelay;

private Random rand;

private Image background;

private Image chickenHead;

private Sprite chickenSprite; //Спрайты в игре Henway – это спрайт цыпленка и 4 спрайта автомобилей

private Sprite[] carSprite = new Sprite[4];

private int[] carYSpeed = new int[4]; //Поскольку автомобили движутся вертикально, не нужно хранить горизонтальные составляющие их скоростей

private boolean gameOver;

private int numLives;

private int score;

Первые две переменные и переменная rand должны быть вам знакомы по созданным ранее программам UFO. Четвертая переменная – новая. Переменная inputDelay контролирует чувствительность пользовательского ввода в игре. Оказывается, что если цыпленок сможет перемещаться очень быстро с одной стороны шоссе на другую, то в игру будет не так уж и весело играть. Чтобы ограничить скорость цыпленка, просто используйте переменную inputDelay.

Две переменные – объекты класса Image – используются для хранения фонового изображения и изображения головы цыпленка, жизни. Хотя эти изображения очень важны в игре, все же сердце Henway – это спрайты. Переменная chickenSprite – это спрайт цыпленка, а массив carSprite хранит спрайты всех четырех автомобилей. Поскольку при нажатиях на клавиши цыпленок перемещается на равные расстояния, то нет необходимости создавать переменную скорости. Однако автомобили движутся с различными скоростями, поэтому необходим массив carYSpeed – массив скоростей автомобилей вдоль оси Y.

Последние три переменные есть практически во всех играх, они хранят текущее состояние игры, число оставшихся жизней и счет. Переменная gameOver используется в нескольких фрагментах кода для проверки конца игры.

Переменная numLives хранит число оставшихся жизней цыпленка и используется для проверки окончания игры, а также определяет число изображений головы цыпленка, выводимых на экран. Наконец, переменная score хранит число очков, набранных игроком, ее значение будет отображаться в конце игры.

Как вы знаете, при создании объекта холста класса HCanvas вызывается конструктор. Кроме того, что он устанавливает частоту кадров игры, в нем выполняется очистка экрана и обнуление задержки ввода:

// установить частоту кадров (30 кадров/с)

frameDelay = 33;

// обнулить задержку ввода

inputDelay = 0;

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3