×
Traktatov.net » Создание игр для мобильных телефонов » Читать онлайн
Страница 217 из 246 Настройки

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

Основная работа метода update() – это обновление спрайтов. Приведенный ниже код обновляет спрайты пришельцев и взрывов:

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

if (blobboSprite[i].isVisible()) {

blobboSprite[i].update();

blobboSprite[i].nextFrame();

}

if (jellySprite[i].isVisible()) { //Обновляются только видимые спрайты

jellySprite[i].update();

jellySprite[i].nextFrame();

}

if (timmySprite[i].isVisible()) {

timmySprite[i].update();

timmySprite[i].nextFrame();

}

if (explosionSprite[i].isVisible()) {

if (explosionSprite[i].getFrame() < 3) //Этот код создает анимацию взрыва, после чего спрайт взрыва исчезает

explosionSprite[i].nextFrame();

else

explosionSprite[i].setVisible(false);

}

}

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

...

Совет Разработчику

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

Следующий фрагмент метода update() достаточно велик, поскольку в нем реализуется большая часть игровой логики.

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

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

if (missileSprite[i].isVisible()) {

// ракета игрока?

if (missileSprite[i].getFrame() == 0) { //Индекс фрейма спрайта ракеты используется для определения типа ракеты

for (int j = 0; j < 3; j++) {

// ракета попала в пришельца Блоббо?

if (blobboSprite[j].isVisible())

if (missileSprite[i].collidesWith(blobboSprite[j], false)) {

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

try {

Manager.playTone(ToneControl.C4 – 6, 100, 100);

}

catch (Exception e) {

}

// создать взрыв

addExplosion(blobboSprite[j]);

// спрятать спрайт и увеличить счет

blobboSprite[j].setVisible(false); //При столкновении спрайта ракеты игрока со спрайтом пришельца оба спрайта исчезают

missileSprite[i].setVisible(false);

score += 10;

break;

}

// ракета попала в пришельца Джелли?

if (jellySprite[j].isVisible())

if (missileSprite[i].collidesWith(jellySprite[j], false)) {

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

try {

Manager.playTone(ToneControl.C4 – 6, 100, 100);

}

catch (Exception e) {

}

// создать взрыв

addExplosion(jellySprite[j]);

// спрятать спрайт и увеличить счет