Создание игр для мобильных телефонов
Шрифт:
Чтобы начать игру, просто проведите вашего цыпленка через дорогу, для чего используйте клавиши со стрелками на мобильном телефоне (или клавиши со стрелками на клавиатуре). Если вы успешно перевели цыпленка через шоссе, ваш счет увеличится на 25 очков.
Конечно, даже лучшие игроки Henway рано или поздно теряют цыпленка под колесами автомобиля. Когда такое случается, подается звуковой сигнал, а цыпленок возвращается на старт. Еще более важно, что игрок видит, что число жизней уменьшилось (рис. 7.6).
Совет Разработчику
Если вы обнаружите, что реакция на нажатия клавиш на клавиатуре очень замедлена, попробуйте уменьшить значение переменной inputDelay до 1. Это поможет увеличить скорость обработки ввода на треть.
Если вы потеряете всех трех цыплят, то игра заканчивается. На рис. 7.7 показан конец игры, на экране просто выводится ваш счет и строка «game over» (игра закончена).
Рис. 7.7. Если вы потеряли всех цыплят, то игра закончена
Вам, может быть, жаль цыплят, погибших под колесами автомобилей на шоссе, но это всего лишь игра. Несмотря на кажущуюся простоту, Henway – это кульминация всего, что вы уже изучили. В дальнейшем вы еще многому научитесь и будете создавать еще более захватывающие игры.
Резюме
Правда жизни такова, что теория бесполезна, если нет практики. Эта глава показала, что все изложенное ранее можно применить на практике – в вашей первой полноценной мобильной игре. В игре Henway используется методика обработки пользовательского ввода, о которой шла речь в предыдущей главе, а также все, что вы узнали о спрайтах. К счастью, теперь, когда есть MIDP 2.0, вы можете с легкостью создавать интересные мобильные игры при минимальных усилиях. Но мидлет Henway, не самый интересный, все только начинается!
Хотя в игре Henway вы уже воспроизвели несколько звуков, в следующей главе речь пойдет о возможностях работы со звуком в J2ME. Вы узнаете, как воспроизводить цифровые звуки, и улучшите игру Henway, добавив соответствующее звуковое сопровождение.
В заключение
В игру Henway можно добавить одну интересную деталь – канализационные люки, которые часто можно увидеть на дорогах. Проходя по такому люку, цыпленок может провалиться в него. Необходимо проверять столкновение спрайта цыпленка со спрайтом люка. Ниже приведены шаги, которые необходимо выполнить, чтобы добавить люки смерти в игру:
1. создайте спрайтовое изображение люка – черный круг;
2. в методе start создайте спрайт люка, убедитесь, что вы передаете созданное изображение. Убедитесь, что люки расположены именно на дорогах;
3. в метод draw добавьте код для рисования новых спрайтов, убедитесь, что люки выводятся на экран сразу после создания фона, но прежде, чем выводятся спрайты автомобилей и цыпленка. Это очень важно, поскольку люки должны располагаться под автомобилями и цыпленком;
4. в метод update добавьте код, проверяющий столкновение спрайта цыпленка со спрайтами люков. Если да, то остановите игру, будто цыпленка переехал автомобиль.
Эти изменения сделают игру Henway более интересной. Еще лучше, если на каждом уровне вы будете размещать люки случайным образом.Глава 8 Добавляем звук
Архив Аркад
Выпущенная в 1981 году компанией Midway игра Gorf – это один из популярных космических шутеров (наряду с Space Invaders и Galaxian). Возможно, она популярна, поскольку унаследовала элементы обеих игр. Игра Gorf известна из-за синтезированной машинной речи, которая используется для диалога с игроком на различных этапах игры. Странное название – это не перевертыш слова «лягушка» (лягушка – frog, англ.), как некоторые могли бы подумать, а аббревиатура, образованная от Galactic Orbiting Robot Force (Галактические орбитальные машинные силы). Но мне больше нравится первый вариант!
В 1977 году в фильме «Звездные войны» прозвучала музыкальная тема, которая надолго осела в памяти тех, кто видел этот фильм. Эта нехитрая мелодия состояла из пяти нот. Если вы не понимаете, о чем идет речь, то потерпите, чуть позже я приведу ее в качестве примера создания мелодии. В этой главе вы познакомитесь с тоновыми звуками, а также узнаете, как в J2ME объединять звуки в единую мелодию. Тоновые звуки можно использовать для создания музыки и звуковых эффектов, т. к. они поддерживаются всеми телефонами стандарта MIDP 2.0.
В этой главе вы узнаете:
► о том, как, используя J2ME, добавить звуки в мобильные игры;
► основы теории тональных звуков и музыки;
► как запросить информацию об аудиовозможностях мобильного телефона;
► как воспроизводить звуки и их последовательности на мобильном телефоне.
Звук и мобильные игры
Несомненно, на сегодняшний день звук остается значимой стороной многих мобильных телефонов. Несмотря на возможность загрузить мелодию на мобильный телефон, до недавнего времени звукам уделялось очень мало внимания. Хотя динамики в телефонах имеют ряд ограничений (из-за размеров), через наушники можно слушать высококачественные звуки и музыку. Поэтому если вы еще не используете телефон как MP3-плеер, то, вероятно, будете вскоре. И если вы можете воспроизводить MP3 на мобильном телефоне, то вы можете слышать высококачественные звуковые эффекты и музыку в играх.
В J2ME есть поддержка мобильного аудио – Mobile Media API, который представляет набор классов и интерфейсов, поддерживающих разнообразные средства мультимедиа в зависимости от типа устройства. Интерфейс Mobile Media API состоит из двух различных наборов API:
► Mobile Media API – для устройств с расширенными средствами мультимедиа и воспроизведения звука;
► MIDP 2.0 Media API – для устройств, поддерживающих только аудио.
Неудивительно, что в настоящее время большинство мобильных телефонов поддерживают MIDP 2.0 Media API, поэтому мы уделим внимание этому интерфейсу. Чтобы вы лучше представляли, что можно сделать, используя MIDP 2.0 Media API, приведу список возможностей, поддерживаемых любым телефоном стандарта MIDP 2.0:
► основные функции управления: воспроизведение, остановка, пауза и т. п.;
► специальные средства, например, регулятор громкости;
► создание звуков и их последовательностей.
Вы уже знакомы со звуками и их последовательностями, иначе они называются рингтонами. Для игр вы можете использовать MIDP 2.0 Media API для создания звуков и их последовательностей – звуковых эффектов и музыки. Однако этим возможности API не исчерпываются. Он также поддерживает различные дополнительные типы мультимедиа, например, звуковые файлы, MIDI-музыку и MP3-аудио. Нет гарантии, что эти средства аудио поддерживаются всеми телефонами стандарта MIDP 2.0, но некоторые телефоны поддерживают эти возможности уже сегодня. Как у разработчика мобильных игр, у вас есть возможность использовать более совершенные средства работы со звуком, или использовать комбинированные приемы.
MIDP 2.0 Media API разработан с учетом трех основных компонентов: менеджер, проигрыватель и управление. Вместе эти три компонента создают программный интерфейс для работы с различными аудиосредствами. Классы и интерфейсы, входящие в состав MIDP 2.0 Media API размещены в пакетах javax.microedition.media и javax.microedition.media.control. Класс Manager, расположенный в пакете media, который позволяет опрашивать телефон о поддерживаемых средствах мультимедиа, а также создавать проигрыватели для воспроизведения любых типов мультимедийных данных. Интерфейс Player располагается в том же пакете, он реализует методы управления воспроизведением аудио. Интерфейс Control служит базовым интерфейсом для особых средств управления мультимедиа, например, регулятором громкости и звуков. Интерфейсы VolumeControl и ToneControl расположены в пакете media.control.
Общий подход, используемый для воспроизведения звука средствами MIDP 2.0 Media API, таков:
1. использовать класс Manager для доступа к особому типу данных;
2. использовать интерфейс Player для воспроизведения мультимедиа;
3. при необходимости использовать интерфейс Control для управления воспроизведением.
Указанный подход является общим и, естественно, может меняться в зависимости от типа медиа. Например, чтобы воспроизвести один звук, достаточно вызвать метод класса Manager, который называется playTone. Чтобы создать и воспроизвести последовательность звуков, необходимо использовать интерфейс ToneControl. В этой главе вы научитесь воспроизводить рингтоны и отдельные звуки, в следующей речь пойдет о воспроизведении звуковых файлов, MIDI-музыки и MP3 аудио.
Тоновые звуки и музыка
Перед тем как приступить к изучению особенностей воспроизведения тонов в MIDP 2.0 Media API, важно узнать о некоторых аспектах тонов и музыки. Вспомните, что, с точки зрения физики, звук – это волна, перемещающаяся в пространстве. Звуковая волна – это результат сжатия и расширения среды. Иначе говоря, звуковая волна – это серия движущихся изменений давления. Вы слышите звук, потому что движущаяся звуковая волна попадает в ваше ухо, а изменение давления воздействует на барабанную перепонку. Если вы оказались на скалистом побережье океана, вы услышите, как волны разбиваются о скалы. Громкость звука определяется энергией звуковой волны.