Создание игр для мобильных телефонов - Майкл Моррисон
Шрифт:
Интервал:
Закладка:
// 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 показано начало игры, пришелец запускает ракету, автомобиль отвечает огнем.
Рис. 18.9. Игра Space Out начинается с того, что пришелец атакует игрока ракетойАвтомобиль можно перемещать, нажимая клавиши Влево или Вправо, чтобы запустить ракету – необходимо нажать клавишу Огонь (клавиша ввода на клавиатуре, если вы используете эмулятор). Если вы попадете в пришельца, то он взорвется (рис. 18.10).
Рис. 18.10. Когда вы попадаете в пришельца, появляется взрывВ итоге, вы окажетесь на опасной территории под атакой пришельцев, они попадают в автомобиль, на месте которого появляется взрыв (рис. 18.11).
Рис. 18.11. Когда пришельцы подбивают машину, на экране появляется взрывВ вашем распоряжении есть только 4 автомобиля. Число оставшихся машин выводится в левом верхнем углу экрана, а число набранных очков – в верхнем правом. Когда вы теряете все автомобили, игра завершается (рис. 18.12).
Рис. 18.12. Когда вы потеряете все свои машины, игра закончится и на дисплее будет отображено game over (игра закончена)Чтобы начать новую игру, просто нажмите кнопку Огонь. Я надеюсь, что вам понравится игра Space Out, вы будете довольны результатом проделанной работы.
Резюме
Вне зависимости от того, являетесь ли вы поклонником космических шутеров, я надеюсь, что вы понимаете значимость разработанной вами в этой главе игры Space Out, поскольку это наиболее полная игра, разработанная в книге. И это не только потому, что эта игра – хороший способ воплотить ваши идеи в реальность, но и потому, что эту игру можно расширить. Прежде чем вы начнете модифицировать игру, у меня есть пример модификации для вас.
В следующей главе вы создадите список рекордов для игры. Несмотря на то что в мобильных телефонах нет жестких дисков (пока), в J2ME есть средство хранения данных от одного запуска приложения до другого.
В заключение
Игра Space Out – это полноценная игра, поэтому я не хочу уходить далеко от основной темы. Поэтому давайте сфокусируемся на возможностях улучшения созданной игры. Прежде всего, плохих парней в игре не может быть много, поэтому одно из улучшений – это добавить новых пришельцев. Например, вы можете добавить пришельца, который будет перемещаться по земле и пытаться съесть автомобиль игрока. Поскольку автомобиль не может стрелять в сторону, то игрок должен убегать от пришельца, пока пришелец не исчезнет. Другая возможность, которую хорошо бы предусмотреть в игре, – это бонусы, объекты, которые случайным образом появляются на экране. Лучший способ – это бросать бонусы на землю с неба. Эти бонусы могут давать игроку временный щит, выстрел несколькими ракетами. Ниже перечислены основные шаги, которые необходимо выполнить:
1. создайте изображения новых пришельцев;
2. измените метод addAlien(), чтобы случайным образом добавлять спрайты новых пришельцев на экран. Убедитесь, что новые типы спрайтов имеют уникальные значения скорости. Например, для пришельца, перемещающегося по поверхности земли, скорость по оси Y должна быть равна 0;
3. измените метод update() так, чтобы он детектировал столкновения между ракетой игрока и спрайтом нового пришельца, после чего скрывал уничтоженный спрайт;
4. создайте новый метод addPowerUp(), аналогичный методу addAlien(), за исключением того, что он должен добавлять бонусы;
5. создайте булевскую переменную, которая будет отслеживать, что бонусы активны (например, временный щит), а затем измените метод update() в соответствии с привнесенными новшествами;
6. измените метод update(), чтобы детектировать столкновение между спрайтом игрока (автомобилем) и спрайтом бонуса и обрабатывать это событие.
Несмотря на то что я отметил, что здесь я немного отступлю от темы всей главы, здесь вы можете в полной мере проявить все полученные знания. Идея состоит в том, чтобы вы начали понимать все аспекты кода. Вы, вероятно, найдете, что по сравнению с созданием новой игры дополнение существующей игры – это намного меньший труд, который вознаграждается очень быстро.Глава 19 Создание списка рекордов
...Архив Аркад
Созданная в 1982 году компанией Seg игра Zaxxon была одной из самых первых видеоигр, использующих преимущества изомерии. Сегодня сложно представить, что графика игры Zaxxon была первоклассной для того времени. Но дело не только в этом. В игре вы могли управлять своим шатлом в трехмерном пространстве. Альтиметр, располагавшийся в левом углу экрана, играл очень важную роль в игровой стратегии, поскольку было необходимо постоянно подстраивать высоту для стрельбы по различным целям. Zaxxon – это одна из самых сложных игр, созданных в 80-х годах XX века, и она по праву считается классикой.
В период расцвета аркад 80-х, вы, вероятно, не задумывались о том, как попасть в топ-лист рекордов. Список рекордов в аркадах – это признание тех, у кого есть время, умение и четвертаки, чтобы быть лучшим из лучших. Если вы думаете, что я несколько драматизирую, то вспомните фрагмент фильма «Сейнфилд» (Seinfield), в котором Джордж Кастанца (George Castanza) попытался перетащить аркаду Frogger через улицу с оживленным движением, чтобы подсоединить ее к аккумулятору и сохранить свой рекорд. Даже если вы не такой большой эгоист, тем не менее лестно, что вы находитесь впереди других игроков. Конечно, менее сильные чувства вы испытаете, если будете знать, что список рекордов ограничен вашим телефоном, но идея остается такой же. В этой главе будет показано, как разработать список рекордов, который будет храниться в постоянной памяти мобильного телефона.
В этой главе вы узнаете:
► почему так важно хранить список рекордов;
► как представить список рекордов в игре;
► как сохранить и получить данные о рекордах с помощью системы управления записями J2ME (J2ME Record Management System, RMS);
► как добавить список рекордов в игру Space Out.
Важность сохранения достижений
Раньше лучшие игроки были известны лишь своими инициалами, которые высвечивались в списке рекордов аркад. Список рекордов в классической аркаде был очень важен для многих ранних игр, поскольку это был единственный способ продемонстрировать достижения игры.
Грустно, что списки рекордов теперь не так популярны, как когда-то, но мы не можем посетовать на достижения технологии. С другой стороны, это вовсе не означает, что списки рекордов полностью остались в прошлом. Например, в большинстве популярных игр, как Tony Hawk Pro Skater или Underground, до сих пор используются списки рекордов, чтобы почтить наиболее сильных игроков. Изменилось то, что применение списка рекордов в аркадах не только изменило его сущность, теперь он в меньшей степени используется для слежения за набранным числом очков. Тем не менее мне нравится идея списка рекордов, даже если в нем лишь друзья. Или просто забавно усовершенствовать свое мастерство в той или иной игре.
В этой главе рассматривается, как добавить список рекордов в игру Space Out, разработанную в предыдущей главе. Список рекордов представляет для вас как программиста мобильных игр сложность, поскольку вы должны сохранять список рекордов, чтобы он оставался в памяти и после закрытия приложения. Но подождите! Ведь в мобильных телефонах нет жестких дисков! Как же можно сохранить данные от одной игры к другой? Ответ лежит в Java Record Management System (Система управления записями в Java) или RMS, которая позволяет постоянно хранить данные в памяти телефона.
Перед тем как вы проникнете в сущность RMS, давайте рассмотрим, как смоделировать данные о рекордах. Иначе говоря, сперва вы должны установить, что и как вы будете хранить. Пока необходимо запомнить, что RMS позволяет хранить данные в специальном контейнере – хранилище записей (record store).
Знакомство с Java RMS
Как вы знаете, дисковые накопители не входят в стандартную комплектацию мобильных телефонов, по крайней мере, пока не входят. Поэтому необходимо найти другие способы хранения информации. К счастью, в мобильных телефонах есть область памяти, которая используется для постоянного хранения данных, поэтому вы можете использовать ее в своих целях. В отличие от жестких дисков, которые работают на основе файлов, фундаментальное понятие хранилища в J2ME – это хранилище записей.