Совет Разработчику
Максимальный объем энергии игрока в игре High Seas равен 45, поэтому код, изменяющий энергию игрока при столкновении с бочкой, восстанавливает уровень энергии до 45. Если бы не было этого ограничения, то индикатор энергии мог бы бесконечно расти, загородив индикатор спасенных пиратов.
Спрайты мины и осьминога обновляются в методе update() так же, как и спрайты бочки и пирата. Но этот код отделен от обновления бочек и пиратов, потому что число мин и осьминогов больше числа бочек и пиратов. Именно поэтому необходим другой цикл for:
for (int i = 0; i < 5; i++) {
// Update the mine and squid sprites
mineSprite[i].update();
squidSprite[i].update();
// проверить столкновение спрайта игрока и спрайта мины
if (playerSprite.collidesWith(mineSprite[i], true)) {
// воспроизвести звук подрыва на мине
try {
minePlayer.start();
}
catch (MediaException me) {
}
// уменьшить энергию игрока
energy -= 10; //Уменьшить энергию игрока, потому что он подорвался на мине
// поместить мину в новое случайное положение
placeSprite(mineSprite[i], landLayer); //Использовать спрайт мины снова, поместив его в новое положение
}
// проверить столкновение спрайта игрока и спрута
if (playerSprite.collidesWith(squidSprite[i], true)) {
// воспроизвести звук столкновения со спрутом
try {
Manager.playTone(ToneControl.C4, 250, 100);
}
catch (MediaException me) {
}
// уменьшить энергию игрока
energy -= 5; //Уменьшить энергию игрока, потому что он попал в щупальца спрута
}
}Сначала выполняется обновление каждого спрайта, затем проверяется столкновение между игроком и миной, в этом случае воспроизводится звуковой эффект, и энергия игрока уменьшается. Мина также перемещается в новое место, аналогично тому, как это делается с пиратом и бочкой.
Столкновение со спрайтом осьминога выполняется почти так же. Вместо звукового файла воспроизводится тон, а энергия игрока также уменьшается. Однако спрайт осьминога не перемещается в новое положение. Это означает, что встреча корабля с осьминогом не заканчивается гибелью или исчезновением бедного морского животного. В этом случае игрок теряет энергию до тех пор, пока он находится в щупальцах монстра. Это делает осьминогов опаснее мин, несмотря на то, что потери энергии меньше.
Энергия корабля служит индикатором продолжения игры. Когда энергия становится меньше 0, игра заканчивается. Ниже приведен код, завершающий игру в случае гибели пиратского судна:if (energy <= 0) {
// остановить музыку
try {
musicPlayer.stop();
}
catch (MediaException me) {
}
// воспроизвести звук тонущего корабля
try {
gameoverPlayer.start();
}
catch (MediaException me) {
}
// спрятать корабль игрока
playerSprite.setVisible(false); //Спрятать корабль игрока, потому что игра окончена
gameOver = true;
}