Создание игр для мобильных телефонов - Майкл Моррисон
Шрифт:
Интервал:
Закладка:
► void paint(Graphics g) – рисует спрайт, если он видимый.
Данные методы поддерживают большое количество функций спрайта, например, создание анимационной последовательности, распознавание конфликтов, работу с пикселем ссылки и добавление трансформаций.
Класс TiledLayer
Класс TiledLayer представляет собой слой, состоящий из нескольких слоев, которые выглядят, как единый графический объект. Вы можете воспринимать такой слой как головоломку, содержащую прямоугольные элементы одинакового размера. Вложенные слои очень удобны для создания фона и карты игры, особенно если такие карты больше, чем экран телефона. Класс TiledLayer позволяет более эффективно управлять изображениями, потому что вы можете использовать слои повторно, а также изменять последовательность слоев для формирования фона.
Аналогично анимационным кадрам, которые хранятся в одном анимированном изображении спрайта, слои хранятся в одном изображении. Класс TiledLayer даже поддерживает анимацию, однако она функционирует не совсем так, как анимация кадров в классе Sprite.
Конструктор
Класс TiledLayer имеет только один конструктор, который принимает различные параметры, определяющие размер карты и слоев:
TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight)
Первые два параметра данного конструктора указывают размеры слоя. Третий параметр – это изображение, содержащее слои, а два последних параметра определяют ширину и высоту отдельных слоев.
Методы
В классе TiledLayer поддерживаются следующие методы:
► void fillCells(int col, int row, int numCols, int numRows, int tileIndex) – заполняет группу ячеек прямоугольной формы выбранным индексом слоя;
► int createAnimatedTile(int staticTileIndex) – создает новый анимированный слой, который изначально настроен на определенный индекс слоя (данный индекс является возвратным, отрицательным значением);
► int getCell(int col, int row) – считывает индекс слоя в указанной ячейке;
► int getCellWidth() – считывает ширину ячейки (в пикселях);
► int getCellHeight() – считывает высоту ячейки (в пикселях);
► void setCell(int col, int row, int tileIndex) – задает индекс слоя для указанной ячейки;
► int getColumns() – считывает количество столбцов в карте слоя;
► int getRows() – считывает количество строк в карте слоя;
► void setStaticTileSet(Image image, int tileWidth, int tileHeight) – задает изображение для слоя, содержащего статичные вложенные слои;
► int getAnimatedTile(int animatedTileIndex) – считывает статичный слой, связанный с анимированным индексом слоя;
► void setAnimatedTile(int animatedTileIndex, int staticTileIndex) – задает индекс слоя в текущем слое, который соответствует указанному индексу анимированного слоя;
► void paint(Graphics g) – рисует вложенный слой.
Эти методы предлагают широкий набор функций для создания и управления вложенными слоями. Вы сможете не только составить карту вложенного слоя, но и создать анимированные слои, сформировать отдельные ячейки в карте слоя, а также изменить изображение слоя.
Класс LayerManager
Класс LayerManager играет роль определенного хранилища слоев и содержит функции, предназначенные для организации и управления спрайтами и вложенными слоями. Класс LayerManager не только помогает вам в управлении порядком в слое, но и позволяет нарисовать группу слоев с одной ячейкой; для этого применяется метод paint(). Самая важная функция класса LayerManager, – это поддержка окна View (Вид), которое позволяет вам просмотреть группу слоев. Данное окно дает пользователю возможность увидеть мир мобильной игры.
Конструктор
Класс LayerManager имеет только один конструктор, который не принимает никаких параметров:
LayerManager()
Для создания слоя вам достаточно вызвать данный конструктор (используется по умолчанию). Параметры добавления и управления слоями вызываются функцией layer manager после ее создания.
Методы
В классе LayerManager поддерживаются следующие методы:
► void append(Layer l) – применяет слой к нижней части layer manager;
► void insert(Layer l, int index) – вставляет слой в виде индекса в layer manager;
► void remove(Layer l) – удаляет определенный слой из layer manager;
► int getSize() – считывает количество слоев, которыми управляет layer manager;
► Layer getLayerAt(int index) – считывает слой в указанном индексе layer manager;
► void setViewWindow(int x, int y, int width, int height) – настраивает окно View для layer manager;
► void paint(Graphics g, int x, int y) – рисует окно layer manager в указанном положении по осям X и Y, как показано в окне View (верхний левый угол окна View рисуется в положении XY на игровом экране).
Эти методы позволяют вам управлять слоями layer manager. Вы можете вставлять слои, чтобы создать нужный порядок, а также удалять слои. Настройки окна View и рисование группы слоев достаточно просты.Приложение B Ресурсы программирования мобильных игр
Вероятно, самое важное в программировании мобильных игр – это постоянное обновление в соответствии с последними тенденциями и технологиями. К счастью, в сети Internet вы найдете большое количество ресурсов по программированию. В этом приложении вы найдете сведения по некоторым полезным ресурсам, с которыми я вам советую работать. Помните о том, что вам следует не только писать кодировку, но и читать статьи, участвовать в обсуждениях на форумах и общаться с другими пользователями.
Micro Dev Net
Веб-сайт Micro Dev Net является одним из моих любимых ресурсов по программированию мобильных игр (особенно мне нравятся статьи на этом сайте). Вы найдете здесь большое количество статей, посвященных созданию мобильных игр в J2ME, не говоря об устройствах Java, мобильных играх, которые вы можете загрузить, а также форум MIDP. Обязательно зайдите на сайт http://www.microjava.com/.
J2ME Gamer
Этот сайт не так велик, как Micro Dev Net. Но ресурс J2ME Gamer окажется очень полезным, если вы хотите больше узнать о разработке мобильных игр. Данный сайт организован как некое сообщество для разработчиков мобильных игр, а это значит, что вам будет интересно посетить его форумы. Также здесь вы найдете новости, посвященные устройствам Java и программному обеспечению. Этот ресурс находится по адресу http://www.j2megamer.com/.
J2ME.org
Этот ресурс является аналогом J2ME Gamer и представляет собой форум для обсуждения всех аспектов программирования J2ME, а не только для создания игр. Посетите не только форум, но и все прочие ресурсы данного сайта. Вы найдете этот сайт по адресу http://www.j2me.org/.
Форум Nokia's Mobile Games Community
Если вы хотите сконцентрироваться на программировании для мобильных устройств определенного производителя, посетите данный ресурс. Этот сайт содержит большое количество ценных ресурсов, которые будут вам интересны даже в том случае, если вы не планируете писать программы для телефонов Nokia. Одна из самых интересных статей на сайте посвящена подробному анализу развития коммерческих мобильных игр. Вы найдете большое количество статей по адресу http://www.forum.nokia.com/main/0,6566,050,00.html.
Wireless Developer Network
Ресурс Wireless Developer Network содержит информацию не столько об отдельных производителях, сколько обо всей индустрии беспроводных устройств. Здесь вы не найдете много сведений о программировании мобильных игр; вместо этого на данном сайте находятся подборки новостей и комментарии, связанные с миром беспроводных устройств, а также статьи, посвященные программированию в целом. Ресурс расположен по адресу http://www.wirelessdevnet.com/.
GameDev.net
Не все в мире программирования мобильных игр концентрируется вокруг слова «мобильный». Я советую вам посетить сайты, посвященные программированию игр как таковому. GameDev.net – это один из подобных сайтов, содержащий такие сведения, как статьи по программированию, обзоры книг и объявления о работе.
Сайт GameDev.net содержит огромное количество полезных ресурсов и сведений. Обратитесь к разделу Game Dictionary, в котором рассматриваются практически все термины, связанные с программированием игр. Ресурс GameDev.net расположен по адресу http://www.gamedev.net/.
Gamasutra
Gamasutra – это еще один общий сайт по программированию, который описывается как «искусство создания игр». Хорошее описание, не правда ли? Как и на сайте GameDev.net, вы найдете здесь много полезного, включая новости, статьи, объявления о работе, руководства по программированию игр и так далее. Обязательно посетите сайт Gamasutra по адресу http://www.gamasutra.com/.
Game Developer Magazine
Последний источник советов по программированию игр, о котором мы хотим вам рассказать, – это Game Developer Magazine, единственный журнал, посвященный исключительно разработке игр. Журнал Game Developer концентрируется, в первую очередь, на коммерческих играх для PC и консолей. Тем не менее данный ресурс содержит и весьма ценную информацию по последним тенденциям в мире программирования. Вы можете купить этот журнал в книжном магазине или зайт на веб-сайт http://www.gdmag.com/.
Gamelan
Сайт Gamelan является частью сайта Developer.com и представляет собой один из оригинальных ресурсов Java. Я работаю с данным сайтом в течение многих лет. Ресурс Gamelan растет вместе с Java; теперь он содержит раздел, посвященный только J2ME. Здесь немного информации о программировании игр как таковом, однако, используя ресурсы данного сайта, вы сможете существенно улучшить свои навыки в Javas. Вы найдете сайт Gamelan по адресу http://www.developer.com/java/.