roidSprite[i].prevFrame();
else
roidSprite[i].nextFrame();
// проверить столкновение НЛО с астероидом
if (ufoSprite.collidesWith(roidSprite[i], true)) { //Поскольку второй параметр метода collidesWith() равен true, то выполняется пиксельное детектирование столкновения
// воспроизвести предупреждающий звук
AlertType.ERROR.playSound(display);
// восстановить исходные положения и скорости объектов
ufoSprite.setPosition((getWidth() – ufoSprite.getWidth()) / 2,
(getHeight() – ufoSprite.getHeight()) / 2);
ufoXSpeed = ufoYSpeed = 0;
for (int j = 0; j < 3; j++)
roidSprite[j].setPosition(0, 0);
// нет необходимости обновлять спрайты астероидов
break;
}
}
}
private void draw(Graphics g) {
// Clear the display
g.setColor(0x000000);
g.fillRect(0, 0, getWidth(), getHeight());
// нарисовать спрайт НЛО
ufoSprite.paint(g);
// нарисовать спрайты астероидов
for (int i = 0; i < 3; i++)
roidSprite[i].paint(g);
// отобразить содержимое буфера на экране
flushGraphics();
}
private void checkBounds(Sprite sprite) {
// проверить положение спрайта
if (sprite.getX() < -sprite.getWidth())
sprite.setPosition(getWidth(), sprite.getY());
else if (sprite.getX() > getWidth())
sprite.setPosition(-sprite.getWidth(), sprite.getY());
if (sprite.getY() < -sprite.getHeight())
sprite.setPosition(sprite.getX(), getHeight());
else if (sprite.getY() > getHeight())
sprite.setPosition(sprite.getX(), -sprite.getHeight());
}
}
Вы уже знакомы со всеми тонкостями этого кода, поэтому я избавлю вас от дальнейших рассуждений. Давайте посмотрим, как он работает.
Тестирование приложения
Тестировать мидлет UFO 2 намного интереснее, чем все предыдущие приложения, поскольку теперь вы можете управлять летающим объектом. На рис. 6.4 показан мидлет UFO 2.
Рис. 6.4. В мидлете UFO 2 вы можете управлять летающим объектом и сталкиваться с астероидами
Нетрудно заметить в этом примере отголоски игры вроде Asteroids. Поиграйте в игру, обратите внимание на то, как детектируются столкновения. Удивительно, как, используя данные изображений, можно определять столкновения с большой степенью точности. Вы можете аккуратно огибать астероиды на очень небольших расстояниях.
Резюме
Эффективное взаимодействие игрока с приложением – это критический фактор при разработке игр. Разработчику очень важно тщательно проработать пользовательский ввод, чтобы он был максимально эффективным в условиях ограниченного пользовательского интерфейса мобильного устройства. В этой главе шла речь о том, как обрабатывать ввод с клавиатуры мобильного устройства – это удивительно просто. Вы также узнали, как детектировать столкновения спрайтов и использовать фреймовую анимацию. Хотя, несомненно, пример UFO 2, созданный в этой главе, можно улучшить, он сочетает в себе все элементы разработки мобильной игры.
В следующей главе вы непосредственно окунетесь в мир программирования мобильных игр и создадите первую мобильную игру Henway, которая во многом похожа на классическую аркаду Frogger.
Еще немного об играх
Пора сделать что-то действительно креативное! Я хочу, чтобы вы добавили еще один анимационный спрайт в мидлет UFO 2. Это может быть спутник, странный пришелец или комета, бороздящая космические просторы, – все, что захотите. Ниже приведено пошаговое описание, как это сделать:
1. нарисуйте или получите каким-либо другим способом изображение, состоящее из нескольких фреймов;
2. создайте член-переменную класса UFOCanvas, в которой будут храниться несколько экземпляров спрайта;
3. в методе start() мидлета загрузите изображение;
4. в методе start() создайте объекты типа Sprite новых спрайтов, не забудьте при инициализации каждого передать соответствующее изображение;
5. создайте код, обновляющий положение новых спрайтов, в методе update() проверяйте их положение на экране. Если вы хотите определять столкновения между созданными спрайтами и любыми другими спрайтами, то смело делайте это в методе update().
6. в методе draw() добавьте код, выполняющий рисование спрайтов.
Хотя для добавления спрайта в мидлет требуется выполнить несколько шагов, это не очень сложно. Уверен, что это упражнение послужит вам на пользу, потому как вам придется более глубоко проникнуть в код и поэкспериментировать, изменяя его.
Глава 7 Henway: дань игре Frogger
...
Архив Аркад
Выпущенная в 1980 году компанией Midway игра Rally-X была очень популярной, она представляла собой гонки в лабиринте. Вы управляете небольшим автомобилем по лабиринту, избегая столкновения с другими автомобилями. Интересный элемент игры Rally-X – это дымовая завеса, которую может выпускать автомобиль и временно нейтрализовать автомобили противника. Однако такая завеса требует дополнительного расхода топлива, поэтому, применяя ее, надо быть осторожным, – очень интересная находка в игре. Другая особенность X-Rally – это уменьшенная карта, на которой вы можете отслеживать свое положение, положение других автомобилей, а также флаги, которые необходимо собрать.
Читать дальше
Конец ознакомительного отрывка
Купить книгу