Совет Разработчику
Максимальный объем энергии игрока в игре 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; //Уменьшить энергию игрока, потому что он попал в щупальца спрута
}
Сначала выполняется обновление каждого спрайта, затем проверяется столкновение между игроком и миной, в этом случае воспроизводится звуковой эффект, и энергия игрока уменьшается. Мина также перемещается в новое место, аналогично тому, как это делается с пиратом и бочкой.
Столкновение со спрайтом осьминога выполняется почти так же. Вместо звукового файла воспроизводится тон, а энергия игрока также уменьшается. Однако спрайт осьминога не перемещается в новое положение. Это означает, что встреча корабля с осьминогом не заканчивается гибелью или исчезновением бедного морского животного. В этом случае игрок теряет энергию до тех пор, пока он находится в щупальцах монстра. Это делает осьминогов опаснее мин, несмотря на то, что потери энергии меньше.
if (energy <= 0) {
// остановить музыку
try {
musicPlayer.stop();
}
catch (MediaException me) {
}
// воспроизвести звук тонущего корабля
try {
gameoverPlayer.start();
}
catch (MediaException me) {
}
// спрятать корабль игрока
playerSprite.setVisible(false); //Спрятать корабль игрока, потому что игра окончена
gameOver = true;