My-library.info
Все категории

Майкл Моррисон - Создание игр для мобильных телефонов

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Майкл Моррисон - Создание игр для мобильных телефонов. Жанр: Программирование издательство неизвестно, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Создание игр для мобильных телефонов
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
261
Текст:
Ознакомительная версия
Читать онлайн
Майкл Моррисон - Создание игр для мобильных телефонов

Майкл Моррисон - Создание игр для мобильных телефонов краткое содержание

Майкл Моррисон - Создание игр для мобильных телефонов - описание и краткое содержание, автор Майкл Моррисон, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Книга «Создание игр для мобильных телефонов» – это практическое руководство, которое поможет разработать и реализовать игру для мобильного телефона.Книга написана простым языком, не содержит сложной и скучной теории программирования и шаг за шагом знакомит с методикой создания технологии «plug-and-play» применительно к созданию огромного количества игр.В издание включены подробные описания и примеры кодов для четырех игр, а также информация, необходимая для реализации вашей собственной задумки.Если вы любите играть в игры и занимаетесь программированием, то эта книга – для вас! Перевод: К. Михалкин

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

Создание игр для мобильных телефонов - читать книгу онлайн бесплатно, автор Майкл Моррисон
Конец ознакомительного отрывкаКупить книгу

Ознакомительная версия.

private void checkBounds() {

// спрятать спрайт при необходимости

if (action == BA_HIDE) { //Спрятать спрайт при ударении о границу экрана

if (getX() < 0 || getX() > (canvas.getWidth() – getWidth()) ||

getY() < 0 || getY() > (canvas.getHeight() – getHeight()))

setVisible(false);

}

// переместить спрайт к противоположному краю экрана

else if (action == BA_WRAP) { //При достижении границы экрана спрайтом переместить спрайт к противоположному краю

//Wrap the sprite around the edges of the screen

if (getX() < -getWidth())

setPosition(canvas.getWidth(), getY());

else if (getX() > canvas.getWidth())

setPosition(-getWidth(), getY());

if (getY() < -getHeight())

setPosition(getX(), canvas.getHeight());

else if (getY() > canvas.getHeight())

setPosition(getX(), -getHeight());

}

// изменить направление движения спрайта на противоположное

else if (action == BA_BOUNCE) { //При ударении спрайта о границу экрана изменить направление его скорости на противоположное

// Bounce the sprite at the edges of the screen

if (getX() < 0 || getX() > (canvas.getWidth() – getWidth()))

xSpeed = -xSpeed;

if (getY() < 0 || getY() > (canvas.getHeight() – getHeight()))

ySpeed = -ySpeed;

}

// остановить спрайт

else { //Остановить спрайт по достижении границы экрана

if (getX() < 0)

setPosition(0, getY());

else if (getX() > (canvas.getWidth() – getWidth()))

setPosition(canvas.getWidth() – getWidth(), getY());

if (getY() < 0)

setPosition(getX(), 0);

else if (getY() > (canvas.getHeight() – getHeight()))

setPosition(getX(), canvas.getHeight() – getHeight());

}

}

Метод checkBounds() – это рабочая лошадка класса MovingSprite. Его целью является проверка столкновения спрайта с границей экрана и обработка этого события. Сначала метод проверяет, нужно ли выполнять действие BA_HIDE, которое соответствует сокрытию спрайта. Затем проверяется, необходимо ли выполнить действие, соответствующее константе BA_WRAP, и при столкновении спрайта с границей экрана переместить спрайт к противоположной границе. Константа BA_BOUNCE соответствует отталкиванию спрайта от границы экрана. И наконец, последний блок условия метода checkBounds() просто останавливает спрайт по достижении им границы экрана. В классе MovingSprite есть ряд вспомогательных методов, с которыми вы еще не знакомы. Ниже приведены эти методы, они обеспечивают доступ к значениям переменных скоростей по осям X и Y:

public int getXSpeed() {

return xSpeed;

}

public int getYSpeed() {

return ySpeed;

}

public void setXSpeed(int xMoveSpeed) {

xSpeed = xMoveSpeed;

}

public void setYSpeed(int yMoveSpeed) {

ySpeed = yMoveSpeed;

}

Эти методы позволяют считывать и изменять значения переменных xSpeed и ySpeed. Новый класс MovingSprite готов к работе, поэтому теперь мы можем сосредоточиться на создании кода самой игры Space Out. Давайте начнем с переменных класса.

Объявление переменных класса

Основные переменные игры Space Out расположены в специальном классе холста – SOCanvas. Этот класс отвечает за всю игровую логику. Поскольку SOCanvas достаточно велик, я разбил его на отдельные части, полный код класса доступен на прилагаемом компакт-диске. Ниже перечислены наиболее важные переменные:

private LayerManager layers;

private Image background;

private Image smallCar;

private MovingSprite playerSprite;

private MovingSprite[] blobboSprite = new MovingSprite[3];

private MovingSprite[] jellySprite = new MovingSprite[3];

private MovingSprite[] timmySprite = new MovingSprite[3];

private MovingSprite[] missileSprite = new MovingSprite[10];

private Sprite[] explosionSprite = new Sprite[3]; //Спрайты взрывов не перемещаются, поэтому они создаются, как обычные анимационные спрайты

private Player musicPlayer;

private Player explosionPlayer;

private Player gameoverPlayer;

private boolean gameOver;

private int score, carsLeft;

Первые несколько переменных используются для хранения менеджера слоев, фонового изображения, изображения маленькой машины, а также различных игровых спрайтов. Изображение background – это изображение пустыни и неба, а изображение маленького автомобиля используется для отображения числа оставшихся жизней. Спрайтовые переменные представляют особый интерес. Они отражают сущность разработки игры Space Out: спрайты не создаются и не уничтожаются во время игры.

В игре не создается динамически случайное число спрайтов, как вы, вероятно, ожидали. Наоборот, все спрайты создаются при запуске игры. При необходимости спрайты скрываются. Например, если пришелец подбит ракетой, то оба спрайта скрываются, а не уничтожаются. Как видно из объявления переменных, в игре есть по три спрайта каждого из пришельцев, десять ракет и три взрыва.

Далее объявляются объекты класса Player, которые используются для работы с музыкой в игре. Наконец, состояние игры описывается переменными gameOver, score и carsLeft.

Создание метода start()

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

try {

background = Image.createImage("/StarryNight.png");

smallCar = Image.createImage("/SmallCar.png");

}

catch (IOException e) {

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

}

Когда эти два изображения загружены, вы можете перейти к игровым спрайтам. Если вы вспомните, то в игре есть спрайт автомобиля, управляемый игроком, а также несколько спрайтов ракет, пришельцев и взрывов. Все эти спрайты, кроме спрайта взрыва, – объекты класса MovingSprite; спрайт взрыва является объектом обычного класса Sprite, потому что он неподвижен. Ниже приведен код, создающий все указанные спрайты:

try {

// создать спрайт автомобиля игрока

playerSprite = new MovingSprite(Image.createImage("/Car.png"), 0, 0,

MovingSprite.BA_STOP, this); //Спрайт игрока останавливается по достижении границы экрана

int sequence5[] = { 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4, 3, 3, 2, 2, 1, 1 }; //Эта последовательность позволяет замедлить анимацию фреймов спрайтов

}

int sequence3[] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1 };

for (int i = 0; i < 3; i++) {

// создать спрайт пришельца Блоббо

blobboSprite[i] = new MovingSprite(Image.createImage("/Blobbo.png"), 20, 21, 3, 2,

MovingSprite.BA_BOUNCE, this); //Спрайт пришельца Блоббо отталкивается от границы экрана

blobboSprite[i].setFrameSequence(sequence5);

blobboSprite[i].setVisible(false);

// Создать спрайт пришельца Джелли

jellySprite[i] = new MovingSprite(Image.createImage("/Jelly.png"), 21, 21, 1, 4,

MovingSprite.BA_BOUNCE, this); //Спрайт пришельца Джелли отталкивается от границы экрана

jellySprite[i].setFrameSequence(sequence3);

jellySprite[i].setVisible(false);

// Создать спрайт пришельца Тимми

timmySprite[i] = new MovingSprite(Image.createImage("/Timmy.png"), 21, 11, 5, 0,

MovingSprite.BA_WRAP, this); //Если спрайт пришельца Тимми достигает границы экрана, то он появляется у противоположной границы

timmySprite[i].setFrameSequence(sequence3);

timmySprite[i].setVisible(false);

// Создать спрайты взрывов

explosionSprite[i] = new Sprite(Image.createImage("/Explosion.png"), 21, 21);

explosionSprite[i].setVisible(false);

}

// создать спрайты ракет

for (int i = 0; i < 10; i++) {

missileSprite[i] = new MovingSprite(Image.createImage("/Missiles.png"),

11, 11, 0, 0,MovingSprite.BA_HIDE, this);

missileSprite[i].setVisible(false); //Все спрайты в игре сначала скрыты

}

}

catch (IOException e) {

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

}

Спрайт игрока создается как объект класса MovingSprite с обработкой достижения спрайтом границы экрана. Остальные спрайты – это также движущиеся спрайты, но с различными скоростями и действиями по достижении границы экрана. Например, скорость пришельца Jelly по оси Х равна 1, а по оси Y – 4, а скорость спрайта пришельца Timmy по оси X равна 5, а по оси Y – 0. Спрайты пришельцев Blobbo и Jelly отталкиваются от границ экрана, спрайт Timmy при достижении границы экрана появляется у противоположной стороны, а спрайты ракет скрываются по достижении границы экрана. Наконец, в игре есть анимационный спрайт – спрайт взрыва, который остается неподвижным. Все спрайты за исключением спрайта игрока скрываются перед началом игры. Затем спрайты добавляются в менеджер слоев, который отвечает за очередность и отрисовку спрайтов. Ниже приведен код работы с менеджером слоев:

layers = new LayerManager();

layers.append(playerSprite);

for (int i = 0; i < 3; i++) {

layers.append(blobboSprite[i]);

layers.append(jellySprite[i]);

layers.append(timmySprite[i]);

layers.append(explosionSprite[i]);

}

for (int i = 0; i < 10; i++) {

layers.append(missileSprite[i]);

}

Несмотря на то что в игре Space Out это не столь значительно, не забудьте, что порядок добавления спрайтов в менеджер слоев определяет порядок вывода их на экран, Z-глубину, – первый спрайт, добавленный с помощью метода append(), будет выведен на экран поверх остальных. Но это не относится к игре Space Out, поскольку порядок вывода спрайтов на экран в ней не важен. Звуковые эффекты и музыка играют важную роль в игре Space Out, что, вероятно, неудивительно. Ниже приведен код, выполняющий инициализацию проигрывателей:

try {

InputStream is = getClass().getResourceAsStream("Music.mid");

musicPlayer = Manager.createPlayer(is, "audio/midi");

musicPlayer.prefetch();

musicPlayer.setLoopCount(-1);

is = getClass().getResourceAsStream("Explosion.wav");

explosionPlayer = Manager.createPlayer(is, "audio/X-wav");

explosionPlayer.prefetch();

is = getClass().getResourceAsStream("GameOver.wav");

gameoverPlayer = Manager.createPlayer(is, "audio/X-wav");

gameoverPlayer.prefetch();

}

catch (IOException ioe) {

}

catch (MediaException me) {

}

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

newGame();

Чуть позже вы познакомитесь с работой метода newGame(). А пока давайте рассмотрим метод update() – сердце большинства игровых мидлетов, включая Space Out.

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

Метод update() вызывается один раз за игровой цикл и отвечает за обработку пользовательского ввода, он выполняет обновление спрайтов, проверку столкновений, добавление новых пришельцев, а также обеспечивает работу игры. Метод update() начинается с проверки окончания игры, если это так, то начинается новая игра нажатием клавиши Огонь.

Ознакомительная версия.


Майкл Моррисон читать все книги автора по порядку

Майкл Моррисон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


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

Отзывы читателей о книге Создание игр для мобильных телефонов, автор: Майкл Моррисон. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.