Майкл Моррисон - Создание игр для мобильных телефонов
- Название:Создание игр для мобильных телефонов
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Майкл Моррисон - Создание игр для мобильных телефонов краткое содержание
Книга «Создание игр для мобильных телефонов» – это практическое руководство, которое поможет разработать и реализовать игру для мобильного телефона.
Книга написана простым языком, не содержит сложной и скучной теории программирования и шаг за шагом знакомит с методикой создания технологии «plug-and-play» применительно к созданию огромного количества игр.
В издание включены подробные описания и примеры кодов для четырех игр, а также информация, необходимая для реализации вашей собственной задумки.
Если вы любите играть в игры и занимаетесь программированием, то эта книга – для вас!
Перевод: К. Михалкин
Создание игр для мобильных телефонов - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Начало новой игры
Несколько раз я уже упоминал о методе newGame() при обсуждении кода игры Space Out. В листинге 18.4 приведен код этого метода:
Листинг 18.4. Метод newGame() класса SOCanvas инициализирует игровые переменные и запускает музыку
private void newGame() {
// Initialize the game variables
gameOver = false;
score = 0;
carsLeft = 3;
// Initialize the player car sprite
playerSprite.setPosition(0, getHeight() – playerSprite.getHeight() – 10); //Поместить спрайт автомобиля в центре пустыни (по высоте)
playerSprite.setXSpeed(4);
playerSprite.setYSpeed(0);
playerSprite.setVisible(true);
// Initialize the alien and explosion sprites
for (int i = 0; i < 3; i++) { //При запуске игры пришельцы не видны
blobboSprite[i].setVisible(false);
jellySprite[i].setVisible(false);
timmySprite[i].setVisible(false);
explosionSprite[i].setVisible(false);
}
// Initialize the missile sprites
for (int i = 0; i < 10; i++) {
missileSprite[i].setVisible(false);
}
// Start the music (at the beginning)
try {
musicPlayer.setMediaTime(0);
musicPlayer.start();
}
catch (MediaException me) {
}
}
Метод newStart() начинается с инициализации трех основных переменных: gameOver, score и carsLeft. Спрайт игрока устанавливается в исходное положение и становится видимым – это необходимо сделать, поскольку спрайт скрывается по окончании игры. Все пришельцы, взрывы и ракеты в начале игры скрыты. Метод newGame() завершается запуском звукового проигрывателя, для чего вызываются методы setMediaTime() и start().
Добавление пришельцев, ракет и взрывов
Оставшаяся часть кода добавляет пришельцев, ракеты и взрывы. Этот код разделен на три метода, первый из которых – это addAlien(). В листинге 18.5 приведен код метода addAlien(), который отвечает за добавление пришельцев в игру.
Листинг 18.5. Метод addAlien() класса SOCanvas добавляет пришельца в игруprivate void addAlien() {
switch (Math.abs(rand.nextInt() % 3)) {
// добавить Блоббо
case 0:
for (int i = 0; i < 3; i++) //Найти спрайт пришельца Блоббо, который еще не виден, изменить его положение и сделать видимым
if (!blobboSprite[i].isVisible()) {
placeSprite(blobboSprite[i]);
blobboSprite[i].setVisible(true);
break;
}
break;
// добавить Джелли
case 1:
for (int i = 0; i < 3; i++) //Если три спрайта пришельца Джелли уже видны, новый спрайт не будет добавлен
if (!jellySprite[i].isVisible()) {
placeSprite(jellySprite[i]);
jellySprite[i].setVisible(true);
break;
}
break;
// Добавить Тимми
case 2:
for (int i = 0; i < 3; i++)
if (!timmySprite[i].isVisible()) {
placeSprite(timmySprite[i]);
timmySprite[i].setVisible(true);
break;
}
break;
}
}Совет Разработчику
Метод placeSprite() вызывается addAlien(), его задача – вычислить случайное положение на игровом экране и поместить в него спрайт. Это вычисление помогает убедиться, что спрайт не будет помещен слишком низко, близко к спрайту автомобиля. Спрайт также размещается подальше от границ экрана, чтобы он сразу не столкнулся с одной из них. Код метода placeSprite() вы можете найти на прилагаемом компакт-диске в коде игры Space Out.
Этот метод случайным образом выбирает тип пришельца, а затем добавляет его спрайт в игру, для чего выполняются следующие шаги:
1. найти подходящий спрайт пришельца, который еще невидим;
2. спрайт помещается в случайное место;
3. показать спрайт.
Подобно тому, как добавляются спрайты пришельцев, метод addMissle() добавляет спрайты ракет. Однако этот метод отличается от addAlien() тем, что в него передается единственный параметр – спрайт, запускающий ракету, чтобы определить тип ракеты. В коде 18.6 приведен код метода addMIssle().
Листинг 18.6. Метод addMissle() класса SOCanvas добавляет ракету так, что создается впечатление, что она запущена спрайтом
private void addMissile(MovingSprite sprite) {
for (int i = 0; i < 10; i++)
if (!missileSprite[i].isVisible()) {
switch (Math.abs(sprite.getXSpeed())) { //Поскольку спрайты игрока и пришельцев имеют различные скорости по оси Х, вы можете использовать значение этой скорости для определения типа запускаемой ракеты
// запустить ракету Блоббо
case 3:
missileSprite[i].setFrame(1);
missileSprite[i].setPosition(sprite.getX() + 5, sprite.getY() + 21);
missileSprite[i].setXSpeed(sprite.getXSpeed() / 2);
missileSprite[i].setYSpeed(5);
break;
// запустить ракету Джелли
case 1:
missileSprite[i].setFrame(2);
missileSprite[i].setPosition(sprite.getX() + 5, sprite.getY() + 21);
missileSprite[i].setXSpeed(0);
missileSprite[i].setYSpeed(4);
break;
// запустить ракету Тимми
case 5:
missileSprite[i].setFrame(3); //Каждый фрейм анимации – это определенный тип ракеты
missileSprite[i].setPosition(sprite.getX() + 5, sprite.getY() + 11);
missileSprite[i].setXSpeed(sprite.getXSpeed() / 2);
missileSprite[i].setYSpeed(3);
break;
// запустить ракету игрока
case 2:
case 4:
missileSprite[i].setFrame(0);
missileSprite[i].setPosition(sprite.getX() + 6, sprite.getY() – 11);
missileSprite[i].setXSpeed(0);
missileSprite[i].setYSpeed(-4);
break;
}
// показать ракету
missileSprite[i].setVisible(true);
break;
}
}
Метод addMissle()принимает спрайт игрока в качестве единственного параметра, создается эффект запуска ракеты указанным спрайтом.
Основная хитрость этого метода – определение типа запускаемой ракеты. Необходим простой и надежный метод определения типа спрайта, запускающего ракету. Хитрость заключается в том, чтобы проверять скорость Х спрайта, поскольку каждый спрайт имеет уникальное значение этой составляющей скорости. Следовательно, оператор условного перехода switch использует именно эту величину для определения типа добавляемой ракеты.
Процесс добавления ракеты содержит следующие этапы:
1. найти подходящий спрайт, который еще невидим;
2. выбрать нужный фрейм спрайтового изображения;
3. поместить ракету в точку, находящуюся рядом с запускающим спрайтом;
4. установить скорость ракеты в зависимости от ее типа;
5. показать ракету.
И наконец, мы подходим к последнему методу игры Space Out, очень похожему на рассмотренные ранее методы addAlien() и addMissle(). В листинге 18.7 приведен код метода addExplosion().
Листинг 18.7. Метод addExplosion() класса SOCanvas добавляет взрыв при разрушении спрайтаprivate void addExplosion(MovingSprite sprite) {
for (int i = 0; i < 3; i++)
if (!explosionSprite[i].isVisible()) {
// Add an explosion where the moving sprite is located
explosionSprite[i].setFrame(0); //Проверка, что анимация взрыва начинается с первого фрейма
explosionSprite[i].setPosition(sprite.getX(), sprite.getY());
explosionSprite[i].setVisible(true);
break;
}
}Этот метод добавляет спрайт взрыва на место указанного спрайта игрока или пришельца. Ниже перечислены шаги, выполняемые при добавлении спрайта взрыва:
1. найти подходящий спрайт взрыва, который еще не задействован;
2. установить номер первого фрейма анимации – 0;
3. разместить спрайт взрыва в центре уничтоженного спрайта;
4. показать взрыв.
Метод addExplosion() завершает код игры Space Out. Я представляю, что к разработке кода были приложены титанические усилия, но следующий раздел вознаградит ваши старания!
Тестирование игры
Я уже много раз говорил, что тестирование – это один из самых веселых этапов тестирования игры, а теперь вы подошли к тестированию совершенно новой игры. Подобно игре High Seas, игра Space Out требует значительного времени на тестирование из-за большого числа взаимодействий игровых спрайтов. Самое хорошее, что для тестирования надо просто поиграть в Space Out. На рис. 18.9 показано начало игры, пришелец запускает ракету, автомобиль отвечает огнем.
Читать дальшеИнтервал:
Закладка: