Чтение онлайн

ЖАНРЫ

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

► изображение информационной строки;

► фоновое изображение воды;

► фоновое изображение с элементами суши;

► изображение пиратского корабля (рис. 12.2);

Рис. 12.2. Изображение пиратского корабля состоит из четырех фреймов, нос корабля повернут в четырех различных направлениях

► изображение пирата (рис. 12.3);

Рис. 12.3. Изображение пирата состоит из четырех фреймов, создающих иллюзию того, что пират качается на волнах

► изображение бочки (рис. 12.4);

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

► изображение мины (рис. 12.5);

Рис. 12.5. Изображение мины состоит из двух фреймов, имитирующих качание на волнах

► изображение осьминога (рис. 12.6).

Рис. 12.6. Изображение спрута состоит из двух фреймов, создающих иллюзию, что он плывет

Первое изображение (информационная строка) – единственное, что может удивить в этом описании. Изображение информационной строки – это просто чистое изображение, служащее фоном. Два фоновых изображения – замощенные слои, имитирующие воду и сушу. В следующих двух разделах вы узнаете об этих изображениях подробнее.

...

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

Информационная строка – это единственный элемент игры High Seas, который зависит от размеров экрана мобильного устройства (ширины). Чтобы масштабировать игру в зависимости от размеров экрана телефона, для информационной строки вы можете использовать или более широкое, или замощенное изображение. К счастью, больший размер экрана не повлияет на динамику игры, а лишь увеличит видимую область карты.

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

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

► оставшаяся у корабля энергия;

► счет – число спасенных пиратов;

► логическая переменная, говорящая об окончании игры.

Теперь вы можете перейти к созданию карт слоев игры High Seas. Помните, что в игре необходимы и другие переменные, например, спрайты и проигрыватели, но приведенный список переменных отслеживает состояние игры и хранит необходимую информацию.

Создание водной карты

Как я объяснял ранее, в игре High Seas используются два различных замощенных слоя: слой воды и слой суши. Водяной слой – «пассивный» – он используется лишь как фон и не взаимодействует со спрайтами. Несмотря на это, в этом замощенном слое есть анимационные элементы, создающие иллюзию движения воды.

Подобно фоновому слою из мидлета Wanderer 2 из предыдущей главы, в этом слое не нужно задавать граничные элементы – это сделает слой суши. Поэтому края слоя воды – пустые элементы (рис. 12.7).

Рис. 12.7. В слое воды не нужны краевые элементы, поскольку они будут скрыты под слоем суши

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

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, -1, 1, -1, 1, 1, -1, -2, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, -2, 0, 0,

0, 0, 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, -2, 1, -1, 1, 1, -2, 1, 1, -1, 1, 0, 0,

0, 0, -2, -1, 1, -1, 1, -2, 1, 1, -2, 1, 1, -1, 1, -2, 1, 1, -2, 1, 1, -1, 0, 0,

0, 0, -1, 1, -1, 1, -1, 1, 1, -1, 1, 1, -1, 1, -1, 1, -1, -1, 1, 1, -1, 1, 0, 0,

0, 0, 1, -1, 1, -1, 1, 1, -1, 1, 1, -1, 1, -2, 1, -1, 1, 1, -1, 1, 1, 1, 0, 0,

0, 0, -1, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, -1, 0, 0,

0, 0, 1, -1, -2, 1, 1, 1, -1, 1, 1, -2, -1, 1, 1, -2, 1, 1, -2, 1, -1, -2, 0, 0,

0, 0, -2, 1, 1, 1, -1, -2, 1, -1, 1, -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, 1, 0, 0,

0, 0, 1, 1, 1, -1, 1, 1, -1, 1, 1, 1, -2, -1, 1, 1, 1, -1, 1, -1, 1, -1, 0, 0,

0, 0, 1, -1, -2, 1, -1, -2, 1, -2, -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, -1, 1, 0, 0,

0, 0, -2, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -2, 1, 1, -2, -1, 0, 0,

0, 0, -1, 1, -1, -1, 1, -1, -2, -1, 1, 1, -2, 1, -1, 1, -1, 1, 1, -1, 1, 1, 0, 0,

0, 0, 1, -2, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, 0, 0,

0, 0, -1, 1, 1, -2, 1, -2, -1, 1, -1, 1, -1, 1, 1, -1, -2, 1, -1, 1, -2, 1, 0, 0,

0, 0, -2, 1, -1, 1, -1, 1, 1, -1, 1, -1, 1, -2, -1, 1, 1, -1, 1, -1, 1, 1, 0, 0,

0, 0, 1, 1, -1, 1, 1, -1, 1, 1, -2, 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, -1, 0, 0,

0, 0, 1, -1, 1, -2, 1, -2, -1, 1, 1, -1, 1, -1, 1, -1, 1, -1, -2, -1, 1, 1, 0, 0,

0, 0, -1, 1, -1, 1, 1, -1, 1, -2, -1, 1, -2, -1, -2, 1, -1, -2, 1, -1, -2, 1, 0, 0,

0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 0, 0,

0, 0, -2, -1, 1, 1, -2, 1, -1, 1, -1, -2, 1, -2, 1, -1, -2, 1, 1, -2, -1, 1, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Приведенный код вам вряд ли что-то скажет, если не посмотреть на ассоциированное с ним изображение. На рис. 12.8 показаны изображения, ассоциированные с данным замощенным слоем. Конечно, вы уже знаете, что ячейки с отрицательными индексами содержат анимационные элементы.

Рис. 12.8. Можно представить, как выглядит водный замощенный слой, если вместо индексов подставить соответствующий код изображения

Разница между элементами этого слоя невелика, но помните, что основная идея – создать иллюзию «живого» океана. Хотя, посмотрев на рис. 12.7, вы можете подумать, что этот слой – большое статическое изображение, рис. 12.8 в совокупности с картой слоя развеивает это впечатление.

Создание карты суши

Карта слоя суши разработана с учетом того, что он выводится поверх водного слоя. Это означает, что графика слоя суши перекроет графику слоя воды. Кроме того, слой суши – это «активный» слой. Это означает, что он взаимодействует со спрайтами мидлета. Графика слоя суши играет роль барьера для пиратского корабля и других спрайтов. Иначе говоря, пустые области на карте суши – это области, в которых могут перемещаться спрайты, остальные области ограничивают перемещение.

На рис. 12.9 показан слой суши, черные области – это прозрачные элементы, внутри которых могут перемещаться спрайты.

Рис. 12.9. В слое суши есть острова, побережья, небольшие скалы. Все они являются барьерами на пути пиратского корабля

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

1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

1, 1, 32, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 1, 1,

1, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,

1, 1, 31, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 7, 0, 27, 1, 1,

1, 1, 31, 0, 0, 0, 0, 0, 0, 0, 10, 12, 0, 0, 0, 0, 0, 6, 14, 12, 0, 27, 1, 1,

1, 1, 31, 0, 6, 11, 11, 11, 11, 11, 14, 12, 0, 0, 0, 0, 0, 10, 16, 8, 0, 27, 1, 1,

1, 1, 31, 0, 10, 16, 9, 9, 9, 9, 9, 8, 0, 0, 0, 0, 0, 5, 8, 0, 0, 27, 1, 1,

1, 1, 31, 0, 10, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,

1, 1, 31, 0, 10, 15, 7, 0, 0, 6, 11, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,

1, 1, 31, 0, 10, 16, 8, 0, 6, 14, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,

1, 1, 31, 0, 10, 12, 0, 0, 10, 1, 12, 0, 0, 0, 0, 6, 11, 11, 7, 0, 0, 27, 1, 1,

1, 1, 31, 0, 10, 15, 11, 11, 14, 16, 8, 0, 0, 0, 0, 10, 1, 1, 12, 0, 0, 27, 1, 1,

1, 1, 31, 0, 5, 9, 9, 9, 9, 8, 0, 0, 0, 0, 0, 10, 1, 1, 12, 0, 0, 27, 1, 1,

1, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 9, 8, 0, 0, 27, 1, 1,

1, 1, 31, 0, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,

1, 1, 31, 0, 19, 20, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 27, 1, 1,

1, 1, 31, 0, 0, 0, 19, 20, 0, 17, 18, 0, 0, 0, 6, 11, 7, 0, 5, 8, 0, 27, 1, 1,

1, 1, 31, 0, 17, 18, 0, 0, 0, 19, 20, 0, 0, 0, 10, 1, 12, 0, 0, 0, 0, 27, 1, 1,

1, 1, 31, 0, 19, 20, 0, 17, 18, 0, 17, 18, 0, 0, 5, 9, 8, 0, 0, 0, 0, 27, 1, 1,

1, 1, 31, 0, 0, 0, 0, 19, 20, 0, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,

1, 1, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 1, 1,

1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

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

Рис. 12.10. Карта элементов, необходимых для построения замощенного слоя

Взяв за основу рис. 12.10, вы сможете понять, как изображение на рис. 12.9 задается приведенной картой. Не забывайте, что все черные области карты задаются индексом 0 – это пустые прозрачные ячейки. Рисунок 12.11 иллюстрирует, что получается, если объединить два слоя.

Рис. 12.11. Игра High Seas состоит из двух перекрывающихся замощенных слоев, суша – это препятствия, а по воде могут перемещаться спрайты

Этот рисунок должен развеять все сомнения, которые могли у вас быть в отношении слоев суши и воды. Как вы, вероятно, понимаете, эти слои – значительная часть игры High Seas, они дают хорошую основу для понимания кода игры.

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

Когда созданы слои и необходимые спрайты, можно перейти к написанию игрового кода.

Создание дрейфующего спрайта

Первое, что вам необходимо для игры High Seas, – это новый класс, он пригодится во многих играх. При работе над игрой High Seas вы поймете, что некоторые спрайты должны дрейфовать или медленно перемещаться по экрану случайным образом. Хотя для создания таких спрайтов вы можете использовать стандартный класс Sprite, а затем заставить их дрейфовать в методе update, целесообразнее создать собственный класс DriftSprite, производный от Sprite.

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

В классе DriftSprite требуются только две переменные:

Поделиться с друзьями: