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

Моррисон Майкл

Шрифт:

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

Последний фрагмент кода мидлета Wanderer, который представляет интерес, – это метод draw, который отвечает за вывод фонового слоя и спрайта. В листинге 10.3 приведен код этого метода.

Листинг 10.3. Метод draw выводит фоновый замощенный слой и спрайт героя

private void draw(Graphics g) {

// вывести фоновый слой

backgroundLayer.paint(g); //Чтобы вывести замощенный слой на экран, достаточно одной строки кода

// вывести спрайт героя

personSprite.paint(g);

// вывести содержимое буфера на экран

flushGraphics;

}

В этом коде нет ничего особенного. Объекты backgroundLayer и personSprite вызывают методы paint, который выводит на экран замощенный слой и спрайт героя. Поскольку, возможно, позиционирование фонового слоя непросто понять с первого раза, я поясню иначе. Сказав, что следует использовать отрицательные координаты, я, вероятно, ввел вас в заблуждение. Все можно представить по-другому, чтобы вы лучше поняли. Попробуйте вывести на экран текущее положение фонового слоя. Для этого в метод draw перед вызовом метода flushGraphics необходимо вставить следующий код:

//вывести текущее положение фонового слоя

String s = "X = " + backgroundLayer.getX + ", Y = " + backgroundLayer.getY;

g.drawString(s, 0, 0, Graphics.TOP | Graphics.LEFT);

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

Тестирование готового приложения

Когда весь код мидлета Wanderer написан, пора приступать к тестированию. Посмотрите на рис. 10.12, на котором показан экран при запуске игры.

Рис. 10.12. При запуске мидлета Wanderer герой появляется в центре карты

Герой находится в центре экрана и в центре игрового мира (карты). Если вы вспомните программный код, то персонаж никогда не уходит со своего места, перемещается лишь фоновый слой, создавая иллюзию ходьбы героя. Когда вы нажимаете клавиши в J2ME-эмуляторе или на клавиатуре телефона, замощенный слой перемещается, выводя на экран новые фрагменты карты. В результате персонаж перемещается по виртуальному миру (рис. 10.13).

Рис. 10.13. В игре Wanderer персонаж остается неподвижным, а фоновый слой перемещается

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

Рис. 10.14. Мидлет Wanderer достаточно умен, чтобы позволить вам выйти за границы виртуального мира

...

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

Да, конечно, Вселенная безгранична, однако карты, созданные людьми, имеют границы. А карты для замощенных слоев – не исключение.

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

Резюме

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

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

Экскурсия

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

  • Читать дальше
  • 1
  • ...
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка