Читаем Создание игр для мобильных телефонов полностью

private LayerManager layers;

private int xView, yView;

private TiledLayer waterLayer;

private TiledLayer landLayer;

private int waterDelay;

private int[] waterTile = { 1, 3 }; //В слое воды используются два различных анимационных изображения

private Image infoBar;

private Sprite playerSprite;

private DriftSprite[] pirateSprite = new DriftSprite[2];

private DriftSprite[] barrelSprite = new DriftSprite[2];

private DriftSprite[] mineSprite = new DriftSprite[5];

private DriftSprite[] squidSprite = new DriftSprite[5];

private Player musicPlayer;

private Player rescuePlayer;

private Player minePlayer;

private Player gameoverPlayer;

private boolean gameOver;

private int energy, piratesSaved;

Первые несколько переменных используются для хранения менеджера слоев, положения окна вида, слоя воды и слоя суши. Переменные waterDelay и waterTile контролируют анимацию воды в замощенном слое водного слоя. Поскольку в игре два различных анимационных элемента воды, переменная waterTile – это массив целых чисел, состоящий из двух элементов.

Переменная infoBar хранит растровое изображение, используемое как фон информационной строки, в которой отображается энергия корабля и число спасенных пиратов. Затем создаются несколько спрайтов: пиратский корабль, два пирата и пара бочек, пять мин и пять осьминогов. Интересно заметить, что в игре больше не будут создаваться какие-либо спрайты. Позже вы узнаете, как повторно использовать спрайты, чтобы создать иллюзию того, что их число увеличилось.

Звуковые эффекты и музыка в игре воспроизводятся с помощью объектов класса Player. И наконец, состояние игры отражается переменными energy и piratesSaved.

Разработка метода start()

Метод start() в игре High Seas выполняет инициализацию всех переменных класса. Например, следующий код создает изображение для информационной строки, а также замощенные слои воды и суши:

try {

infoBar = Image.createImage("/InfoBar.png");

waterLayer = new TiledLayer(24, 24, Image.createImage("/Water.png"), 32, 32);

landLayer = new TiledLayer(24, 24, Image.createImage("/Land.png"), 32, 32);

}

catch (IOException e) {

System.err.println("Failed loading images!");

}

Если вы вспомните, то в водном слое используются два анимационных элемента, имитирующих движение воды. Ниже приведен код, создающий эти элементы:

waterLayer.createAnimatedTile(1); waterLayer.createAnimatedTile(3);

Два анимационных элемента имеют различные индексы (1 и 3), это важно, поскольку элементы при создании анимации будут отображать различные картинки. Если использовались одинаковые инициализирующие значения, то вы не увидите никакой разницы. Также в этой главе вы разработали водный слой, результатом которого является массив целых чисел waterMap, содержащий карту слоя. Ниже приведен код, инициализирующий замощенный слой значениями из этого массива:

for (int i = 0; i < waterMap.length; i++) {

int column = i % 24;

int row = (i – column) / 24;

waterLayer.setCell(column, row, waterMap[i]);

}

Чтобы завершить инициализацию водного слоя, необходимо установить начальное значение для переменной waterDelay, которая используется как счетчик, регулирующий скорость анимации:

waterDelay = 0;

Подобно водному слою, слой суши описывается картой индексов landMap, содержание которой вы видели ранее. Следующий код выполняет инициализацию слоя суши:

Перейти на страницу:

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT