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

Метод newGame() начинается с инициализации трех основных игровых переменных. Обратите внимание, что значение переменной energy равно максимально возможному значению 45. Затем спрайт игрока становится видимым, для чего вызывается метод setVisible(). Это необходимо потому, что при окончании игры спрайт пиратского корабля исчезает с экрана. Спрайт игрока помещается в случайное место на карте, для чего вызывается метод placeSprite(). В соответствии с этим изменяется положение окна вида таким образом, чтобы спрайт оказался в центре окна. В конце вызовом методов setMediaTime() и start() начинается воспроизведение музыки.

Безопасное размещение спрайтов

Я могу понять, если вы устали, но я обещаю, что это последний фрагмент кода игры High Seas, который мы посмотрим. В листинге 12.5 приведен полный код метода placeSprite(), который отвечает за размещение спрайта в произвольной точке игровой карты.

Листинг 12.5. Метод placeSprite() класса HSCanvas помещает спрайт в произвольную точку карты так, чтобы он не совпадал со слоем – барьером

private void placeSprite(Sprite sprite, TiledLayer barrier) {

// попробовать поместить в произвольную точку

sprite.setPosition(Math.abs(rand.nextInt() % barrier.getWidth()) – //Спрайт помещается случайным образом

sprite.getWidth(), Math.abs(rand.nextInt() % barrier.getHeight()) -

sprite.getHeight());

// перемещать, пока не будет столкновения

while (sprite.collidesWith(barrier, true)) { //Проверить столкновение спрайта со слоем-барьером, продолжать перемещение спрайта до тех пор, пока он не столкнется со слоем-барьером

sprite.setPosition(Math.abs(rand.nextInt() % barrier.getWidth()) -

sprite.getWidth(), Math.abs(rand.nextInt() % barrier.getHeight()) -

sprite.getHeight());

}

}

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

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

Тестирование игры

Перейдем к тестированию игры. На рис. 12.12 показан старт игры. В этом запуске игры пират находится рядом с кораблем.

Рис. 12.12. Хорошее начало, пиратский корабль готов к спасательной миссии

После того как пират спасен, его спрайт исчезает с экрана, а счетчик спасенных пиратов увеличивается на 1 (рис. 12.13).

Рис. 12.13. Первый пират спасен – его спрайт исчез с карты, а счетчик спасенных пиратов увеличился на 1

В игре вы рано или поздно столкнетесь с другими спрайтами – минами, бочками и осьминогами (рис. 12.14).

Рис. 12.14. Дрейфующие мины и бочки – это противоположные объекты в игре. Первые отнимают энергию, вторые – прибавляют

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

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

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT