Первая часть кода выводит информационную строку – фоновое растровое изображение, индикатор энергии и число спасенных пиратов. Индикатор энергии рисуется с помощью метода fillRect(), а текст выводится методом drawString().
Слои выводятся в середине метода draw(), для этого нужна лишь одна строка кода, за которой следует сообщение об окончании игры. Если игра закончена, то выводится сообщение о конце игры – «GAME OVER», после чего появляется число спасенных пиратов – счет игры.
Начало новой игры
В разъяснениях я несколько раз упоминал о методе newGame(). Пришла пора увидеть, как он работает. Листинг 12.4 содержит код этого метода, начинающего новую игру.
Листинг 12.4. Метод newGame() класса HSCanvas инициализирует переменные игры, изменяет положение пиратского корабля и начинает воспроизведение музыкиprivate void newGame() {
// инициализировать переменные игры
gameOver = false;
energy = 45;
piratesSaved = 0;
// показать спрайт пиратского корабля
playerSprite.setVisible(true); //В начале игры важно вывести на экран корабль игрока
// поместить игрока и переместить окно вида
placeSprite(playerSprite, landLayer); //При запуске игры корабль игрока помещается на карте случайно
xView = playerSprite.getX() – ((getWidth() – playerSprite.getWidth()) / 2);
yView = playerSprite.getY() – ((getHeight() – playerSprite.getHeight()) / 2);
layers.setViewWindow(xView, yView, getWidth(),
getHeight() – infoBar.getHeight());
// начать воспроизведение музыки
try {
musicPlayer.setMediaTime(0);
musicPlayer.start();
}
catch (MediaException me) {
}
}