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

Метод update несложный, он перемещает фоновый слой в соответствии с нажатыми клавишами. Единственное, что вас может удивить, – необходимость перемещать замощенный слой в направлении, противоположном направлению перемещения героя. Например, чтобы создать иллюзию того, что герой перемещается влево, фон необходимо переместить вправо. Фреймы спрайта героя сменяют друг друга при каждом движении. Поскольку спрайт состоит из двух фреймов, то они отображаются поочередно.

Почти в конце метода update производится вызов метода checkBackgroundBounds, который проверяет, чтобы герой не вышел за границы карты. Этот метод приведен в листинге 10.2.

Листинг 10.2. Метод checkBackgroundBounds проверяет, чтобы герой не вышел за пределы карты

private void checkBackgroundBounds(TiledLayer background) {

// при необходимости остановить фон

if (background.getX > -15) //Числа в этом коде аккуратно вычислены так, чтобы герой не вышел за границы замощенного слоя

background.setPosition(-15, background.getY);

else if (background.getX < -572)

background.setPosition(-572, background.getY);

if (background.getY > -25)

background.setPosition(background.getX, -25);

else if (background.getY < -572)

background.setPosition(background.getX, -572);

}

Хотя основной целью метода 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 персонаж остается неподвижным, а фоновый слой перемещается

Перейти на страницу:

Похожие книги

С компьютером на ты. Самое необходимое
С компьютером на ты. Самое необходимое

Рассказывается о работе в операционной системе Windows (на примере версий XP и 7), текстовом редакторе Word 2010 и других приложениях, необходимых каждому пользователю: архиваторах, антивирусах и программах для просмотра видео и прослушивания музыки (Winamp, QuickTime Pro). Большое внимание уделяется работе в Интернете. Рассказывается о программах для просмотра Web-страниц, об электронной почте, а также о различных полезных приложениях для работы в сети — менеджерах закачек файлов, ICQ, Windows Live Messenger, MSN и многих других. Во втором издании рассмотрена новая ОС — Windows 7, а также последние версии приложений для пользователей.Для начинающих пользователей ПК.

Андрей Александрович Егоров , Андрей Егоров

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
От «кирпича» до смартфона
От «кирпича» до смартфона

Перед вами уникальное исследование мира мобильной индустрии, превращенное его автором Эльдаром Муртазиным, ведущим аналитиком Mobile Research Group и главным российским специалистом по мобильным телефонам, в захватывающий бизнес-триллер. Гигантские компании — Nokia, Motorola, Samsung бросают на мобильный фронт колоссальные силы, создают альянсы, охотятся за лучшими специалистами, шпионят друг за другом. Разработки ведутся в обстановке строжайшей секретности. Цель — выпустить на рынок новую, уникальную модель раньше конкурентов или даже полностью изменить наше представление о мобильном телефоне, как это недавно удалось Apple со своим iPhone.Эта книга предназначена для тех, кто видит в мобильном телефоне не просто средство связи, а чудо инженерной мысли, смелое воплощение дизайнерских фантазий, символ нашей эпохи.

Эльдар Викторович Муртазин , Эльдар Муртазин

Справочная литература / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии