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