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

Если вы вспомните, в игре High Seas пиратский корабль остается неподвижным в центре экрана, а остальные элементы перемещаются. Код обработки пользовательского ввода достигает этого эффекта, перемещая окно вида в соответствии с нажатыми клавишами. Сначала определяется, на какое расстояние необходимо переместить изображение, а затем окно перемещается вызовом метода setViewWindow(). Спрайт игрока перемещается на это расстояние, чтобы оставаться в центре экрана. Класс DriftSprite проверяет столкновение со слоем-барьером всех спрайтов, кроме спрайта пиратского корабля. Приведенный далее код выполняет проверку столкновения корабля игрока со слоем-барьером:

if (playerSprite.collidesWith(landLayer, true)) {

// восстановить исходные положения окна вида и спрайта игрока

layers.setViewWindow(xView, yView, getWidth(),

getHeight() – infoBar.getHeight());

playerSprite.move(-xMove, -yMove);

}

else {

// если столкновение не произошло, изменить координаты окна вида

xView += xMove;

yView += yMove;

}

Если столкновение произошло, то окно вида возвращается в исходное положение, которое было сохранено в переменных xView, yView. Спрайт игрока также возвращается в исходное положение таким образом, что он остается в центре игрового экрана. Если столкновения нет, то окно вида перемещается в новое положение, определяемое переменными xView и yView. Обновление спрайтов игры High Seas – это та часть кода, в которой выполняется большее число действий. Вот как это делается:

for (int i = 0; i < 2; i++) {

// обновить спрайты пиратов, бочек и мин

pirateSprite[i].update();

barrelSprite[i].update();

// проверить столкновение спрайта корабля и спрайта пирата

if (playerSprite.collidesWith(pirateSprite[i], true)) {

// воспроизвести звук спасения пирата

try {

rescuePlayer.start();

}

catch (MediaException me) {

}

// увеличить число спасенных пиратов

piratesSaved++; //Увеличить счетчик пиратов, потому что был спасен пират

// поместить пирата в новое положение

placeSprite(pirateSprite[i], landLayer); //Использовать спрайт пирата снова, поместив его в новое место

}

// проверить столкновение спрайта корабля со спрайтом бочки

if (playerSprite.collidesWith(barrelSprite[i], true)) {

// воспроизвести звук пополнения энергии

try {

Manager.playTone(ToneControl.C4 + 12, 250, 100);

}

catch (MediaException me) {

}

// увеличить энергию игрока

energy = Math.min(energy + 5, 45); //Увеличить энергию игрока, потому что была подорвана бочка

// поместить бочку в новое положение

placeSprite(barrelSprite[i], landLayer); //Использовать спрайт бочки снова, поместив его в новое положение

}

}

После обновления обоих спрайтов этот код проверяет столкновение между спрайтом корабля и спрайтом пирата. Если столкновение определено, то воспроизводится звук спасения, означающий, что пират спасен. Число спасенных пиратов, определяемое переменной piratesSaved, увеличивается на 1. Спрайт пирата помещается в новое случайное положение, для чего вызывается метод placeSprite(). Для игрока пират исчез, а в реальности он просто переместился в другое место на карте. Это удобный способ убрать пирата и создать нового простым перемещением спрайта. Наконец, в этом фрагменте кода показано, как применять метод placeSprite(). После того, как было определено столкновение между спрайтами корабля и пирата, проверяется столкновение корабля с бочкой. В этом случае воспроизводится тоновый сигнал, а не wav-файл. Энергия игрока увеличивается, а бочка перемещается в новое место на карте.

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

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

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