Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #56, ИЮЛЬ 2005 г.

Развлекуха для кодера

Denis Mingulov

Спецвыпуск: Хакер, номер #056, стр. 056-064-1


(denis@mingulov.com; ICQ 119841948; www.mingulov.com)

Создание телефонной игры на конкретном примере

В этой статье мы расскажем, как происходит создание игры для мобильного телефона. В чем-то похоже на извращения игровых кодеров-одиночек конца 80-х, чем-то отличается от них. Главное то, что это популярно и нравится нашим пользователям :).

Для начала определимся, какую игру мы хотим написать, какие возможности будем использовать, как взаимодействовать с игроком - в общем, что хочется получить в итоге? Для начала предлагаю выбрать какую-нибудь аркаду, как представителя наиболее популярного жанра мобильных игр. Существует много специальных примеров, которые можно использовать, чтобы создать собственный вариант. Проще всего - использовать их для изучения, возможно, сделать что-нибудь базой будущей программы. Если желаешь собственной игре максимальной аудитории, пиши ее на Java 2 Micro Edition (J2ME), которую поддерживают большинство современных телефонов.

Жестокие требования

Для начала нам необходимо загрузить и установить Java 2 SE SDK 1.4.2 с сайта java.sun.com, а также J2ME MIDP API - оно есть, например, в Sun J2ME WTK. Как вариант, можешь взять Nokia Developers Suite for J2ME последней версии. Кроме того, желательно быть знакомым хотя бы с основами программирования на Java. Больше ничего не требуется, код программы можно писать в любом текстовом редакторе.

Структура программы

Аркада. Простейшая выглядит так: глубокий космос, командир космического корабля, вооруженного ракетами класса "Космос-Космос", лавирует между астероидам разного размера, разрушая их до мельчайшей пыли и очищая окружающее пространство.

Какую структуру программы выбрать? Независимую, готовую к замене отдельных частей. Другими словами, будем работать с блоками. Посмотри на этот листинг:

public class Game extends MIDlet implements CommandListener;

public class Field extends Canvas implements Runnable;

public class Slideshow extends TimerTask;

public class Geometry extends Object;

public class Pool extends Object;

public class Explosion extends Object;

public abstract class Mobile extends Object;

public class Asteroid extends Mobile;

public class Rocket extends Mobile;

public class Ship extends Mobile;

public class Scores;

Здесь:

Game - собственно мидлет, меню, формы и т.д.

Field - игровое поле, действие.

Slideshow - различные экраны игры (например лучшие результаты, управление).

Geometry - отдельный класс для различных вычислений.

Pool - хранилище всех объектов, находящихся на поле.

Explosion - взрыв после разрушения астероида.

Mobile - абстрактный класс для перемещаемого объекта, который может оказаться на игровом поле.

Asteroid, Rocket и Ship - астероид, запущенная ракета и сам космический корабль.

Scores - отдельный класс для сохранения информации о высших результатах, полученных в игре.

Теперь информации достаточно - можно начать реализовывать первую версию игры (и не самую элементарную!), основываясь на этом плане.

Разберемся в деталях того, что нужно знать в каждом объекте. Любой движущийся элемент на экране - космические координаты и скорость движения. Об астероиде нужно знать его размер и положение в пространстве (в двухмерном простейшем представлении - как он наклонен относительно базовой фигуры). О ракете - направление ее движения, а также то, какое расстояние она уже пролетела (возможно, скоро она исчезнет). О космическом корабле – опять же, его положение в космическом пространстве. Пока хватит.

Содержание  Вперед на стр. 056-064-2