jellySprite[j].setVisible(false);
missileSprite[i].setVisible(false);
score += 15;
break;
}
// ракета попала в спрайт пришельца Тимми?
if (timmySprite[j].isVisible())
if (missileSprite[i].collidesWith(timmySprite[j], false)) {
// воспроизвести звук разрушения
try {
Manager.playTone(ToneControl.C4 – 6, 100, 100);
}
catch (Exception e) {
// создать взрыв
addExplosion(timmySprite[j]);
// спрятать спрайт и увеличить счет
timmySprite[j].setVisible(false);
missileSprite[i].setVisible(false);
score += 20; //Поскольку пришельцы Тимми летают быстрее других, за его уничтожение дается больше очков
break;
}
}
}
// ракета пришельца?
else {
// ракета попала в спрайт автомобиля?
if (missileSprite[i].collidesWith(playerSprite, false)) {
// воспроизвести звук взрывающегося автомобиля
try {
explosionPlayer.start(); //Если ракета пришельца попадает в автомобиль, воспроизводится звук взрыва
}
catch (MediaException me) {
}
// создать взрыв
addExplosion(playerSprite);
// установить спрайт игрока в исходное положение
playerSprite.setPosition(0,
getHeight() – playerSprite.getHeight() – 10); //Положение автомобиля игрока изменяется, чем создается иллюзия нового автомобиля
playerSprite.setXSpeed(4);
playerSprite.setYSpeed(0);
// спрятать спрайт ракеты
missileSprite[i].setVisible(false);
// проверить, закончена ли игра
if (carsLeft– == 0) {
// остановить музыку
try {
musicPlayer.stop();
}
catch (MediaException me) {
}
// воспроизвести звук окончания игры
try {
gameoverPlayer.start();
}
catch (MediaException me) {
}
// спрятать спрайт автомобиля
playerSprite.setVisible(false);
gameOver = true;
return;
}
}
}
missileSprite[i].update();
}
}Приведенный код проверяет столкновение спрайта ракеты с другими игровыми спрайтами. Это очень важная информация, поскольку она определяет, как взаимодействует спрайт ракеты с прочими спрайтами. Ракеты игрока могут подбить только пришельцев, а ракеты пришельцев – игрока.
Совет Разработчику
Чтобы спрайты пришельцев не уничтожили друг друга, спрайты ракет разработаны так, что они не могут уничтожить спрайты пришельцев. Поэтому код работы со спрайтами ракет сначала проверяет, кому принадлежит ракета, и уже потом проверяется столкновение спрайта ракеты с другими спрайтами. Кроме того, это позволяет минимизировать число проверок столкновений, делая код игры более эффективным.
Если вы внимательно изучите приведенный код, то увидите, что при попадании ракеты в спрайт пришельца выполняются следующие действия:
1. воспроизводится тоновый сигнал;
2. создается спрайт взрыва;
3. спрайты пришельца и ракеты скрываются;
4. счет увеличивается;
Если ракета – это ракета пришельца, то выполняются следующие действия:
1. воспроизводится звуковой файл;
2. создается спрайт взрыва;
3. спрайт автомобиля возвращается в исходное положение у левого края экрана;
4. спрайт ракеты скрывается;
5. проверяется окончание игры.
Если значение переменной carsLeft показывает, что у игрока закончились автомобили, то игра заканчивается. Музыка останавливается, воспроизводится звук конца игры, спрайт автомобиля скрывается, а значение переменной gameOver становится равным true.