Создание карты суши
Карта слоя суши разработана с учетом того, что он выводится поверх водного слоя. Это означает, что графика слоя суши перекроет графику слоя воды. Кроме того, слой суши – это «активный» слой. Это означает, что он взаимодействует со спрайтами мидлета. Графика слоя суши играет роль барьера для пиратского корабля и других спрайтов. Иначе говоря, пустые области на карте суши – это области, в которых могут перемещаться спрайты, остальные области ограничивают перемещение.
На рис. 12.9 показан слой суши, черные области – это прозрачные элементы, внутри которых могут перемещаться спрайты.
Рис. 12.9. В слое суши есть острова, побережья, небольшие скалы. Все они являются барьерами на пути пиратского корабля
Как видно из рисунка, значительные области слоя суши – это пустые элементы, здесь спрайты могут перемещаться. Ниже приведен код карты этого слоя:
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 32, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 1, 1,
1, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,
1, 1, 31, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 6, 7, 0, 27, 1, 1,
1, 1, 31, 0, 0, 0, 0, 0, 0, 0, 10, 12, 0, 0, 0, 0, 0, 6, 14, 12, 0, 27, 1, 1,
1, 1, 31, 0, 6, 11, 11, 11, 11, 11, 14, 12, 0, 0, 0, 0, 0, 10, 16, 8, 0, 27, 1, 1,
1, 1, 31, 0, 10, 16, 9, 9, 9, 9, 9, 8, 0, 0, 0, 0, 0, 5, 8, 0, 0, 27, 1, 1,
1, 1, 31, 0, 10, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,
1, 1, 31, 0, 10, 15, 7, 0, 0, 6, 11, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,
1, 1, 31, 0, 10, 16, 8, 0, 6, 14, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,
1, 1, 31, 0, 10, 12, 0, 0, 10, 1, 12, 0, 0, 0, 0, 6, 11, 11, 7, 0, 0, 27, 1, 1,
1, 1, 31, 0, 10, 15, 11, 11, 14, 16, 8, 0, 0, 0, 0, 10, 1, 1, 12, 0, 0, 27, 1, 1,
1, 1, 31, 0, 5, 9, 9, 9, 9, 8, 0, 0, 0, 0, 0, 10, 1, 1, 12, 0, 0, 27, 1, 1,
1, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 9, 8, 0, 0, 27, 1, 1,
1, 1, 31, 0, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,
1, 1, 31, 0, 19, 20, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 27, 1, 1,
1, 1, 31, 0, 0, 0, 19, 20, 0, 17, 18, 0, 0, 0, 6, 11, 7, 0, 5, 8, 0, 27, 1, 1,
1, 1, 31, 0, 17, 18, 0, 0, 0, 19, 20, 0, 0, 0, 10, 1, 12, 0, 0, 0, 0, 27, 1, 1,
1, 1, 31, 0, 19, 20, 0, 17, 18, 0, 17, 18, 0, 0, 5, 9, 8, 0, 0, 0, 0, 27, 1, 1,
1, 1, 31, 0, 0, 0, 0, 19, 20, 0, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 1,
1, 1, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
И снова, если у вас не столь богатая фантазия, чтобы представить, как эти цифры составляют карту, поставьте в соответствие индексам элементы ассоциированного со слоем изображения. На рис. 12.10 показаны элементы, используемые для построения замощенного слоя.
Рис. 12.10. Карта элементов, необходимых для построения замощенного слоя
Взяв за основу рис. 12.10, вы сможете понять, как изображение на рис. 12.9 задается приведенной картой. Не забывайте, что все черные области карты задаются индексом 0 – это пустые прозрачные ячейки. Рисунок 12.11 иллюстрирует, что получается, если объединить два слоя.
Рис. 12.11. Игра High Seas состоит из двух перекрывающихся замощенных слоев, суша – это препятствия, а по воде могут перемещаться спрайты
Этот рисунок должен развеять все сомнения, которые могли у вас быть в отношении слоев суши и воды. Как вы, вероятно, понимаете, эти слои – значительная часть игры High Seas, они дают хорошую основу для понимания кода игры.
Разработка игры
Когда созданы слои и необходимые спрайты, можно перейти к написанию игрового кода.
Создание дрейфующего спрайта
Первое, что вам необходимо для игры High Seas, – это новый класс, он пригодится во многих играх. При работе над игрой High Seas вы поймете, что некоторые спрайты должны дрейфовать или медленно перемещаться по экрану случайным образом. Хотя для создания таких спрайтов вы можете использовать стандартный класс Sprite, а затем заставить их дрейфовать в методе update(), целесообразнее создать собственный класс DriftSprite, производный от Sprite.
Класс DriftSprite имеет достаточно простой метод, перемещающий спрайты с определенной скоростью. Если скорость невелика, создается ощущение, что объект дрейфует, в то время как на больших скоростях возникает иллюзия, что объект движется сам. В любом случае, это нам поможет, поскольку пираты, бочки и мины должны дрейфовать, а осьминог должен перемещаться быстрее, потому что он умеет плавать.
В классе DriftSprite требуются только две переменные:
private int speed; private TiledLayer barrier;
Переменная speed определяет скорость спрайта, которая измеряется в пикселях за игровой цикл. Скорости 1 или 2 хорошо подходят для того, чтобы заставить спрайты дрейфовать. Большие значения создадут иллюзию того, что спрайты передвигаются самостоятельно.
Переменная barrier – это замощенный слой, который играет роль барьера для спрайта. Эта переменная необходима, если предположить, что в большинстве игр будет использоваться слой, ограничивающий перемещения спрайтов. Этот слой может быть лабиринтом, посадочной площадкой или просто землей, но большинство игр используют такие слои. Слой-барьер, ассоциированный с дрейфующим спрайтом, не имеет ничего общего с возможностью дрейфовать, однако он необходим для детектирования столкновений со спрайтом в методе update().
Читать дальше
Конец ознакомительного отрывка
Купить книгу