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

Тут можно читать онлайн Майкл Моррисон - Создание игр для мобильных телефонов - бесплатно ознакомительный отрывок. Жанр: comp-programming. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Создание игр для мобильных телефонов
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.56/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Создание игр для мобильных телефонов - описание и краткое содержание, автор Майкл Моррисон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга «Создание игр для мобильных телефонов» – это практическое руководство, которое поможет разработать и реализовать игру для мобильного телефона.

Книга написана простым языком, не содержит сложной и скучной теории программирования и шаг за шагом знакомит с методикой создания технологии «plug-and-play» применительно к созданию огромного количества игр.

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

Если вы любите играть в игры и занимаетесь программированием, то эта книга – для вас!

Перевод: К. Михалкин

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

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

Интервал:

Закладка:

Сделать

После того как датаграммное соединение установлено, метод run() запускает бесконечный цикл, в котором выполняются попытки принятия пакетов от клиента. Сначала создается объект класса Datagram, а затем он используется как хранилище и приемник датаграмм. Адрес датаграммы сохраняется на тот случай, если серверу потребуется отправить ответ.

Если датаграмма содержит данные, то байты датаграммы преобразуются в строку. Затем проверяется, равна ли эта строка «Client», специальному сообщению, обозначающему соединение клиента с сервером. Если соединение прошло успешно, то статус изменяется и клиенту отправляется сообщение «Server», таким образом клиент уведомляется о том, что соединение установлено.

Датаграммный пакет содержит строку «Client» только в том случае, если соединение установлено впервые. Далее будут отправляться и приниматься пакеты, содержащие только слова «Dot» (точка) или «Dash» (тире), в зависимости от того, какое сообщение отправляется клиентом. Сообщение передается в класс LHCanvas, где оно обрабатывается методом receiveMessage(). Подробнее об этом вы узнаете чуть позже, когда познакомитесь с кодом холста мидлета Lighthouse.

Последний метод класса LHServer – это метод sendMessage(), приведенный в листинге 14.2. Этот метод отправляет сообщения клиенту.

Листинг 14.2. Метод sendMessage() класса LHServer отправляет строковое сообщение как пакет датаграммы

public void sendMessage(String message) {

// отправить сообщение

try {

// преобразовать текстовое сообщение в массив байтов

byte[] bytes = message.getBytes(); //Строковое сообщение должно быть преобразовано в массив байтов

// отправить сообщение

Datagram dg = null; //Упаковка данных в датаграмму и отправка клиенту

dg = dc.newDatagram(bytes, bytes.length, address);

dc.send(dg);

}

catch (Exception e) {

}

}

В этом коде строковое сообщение преобразуется в массив байтов, а затем отправляется клиенту как датаграммный пакет. Обратите внимание, что адрес, сохраненный ранее в методе run(), теперь используется при создании объекта Datagram отправляемого сообщения. Этот адрес необходим, чтобы отправить сообщение клиенту. Однако, как вы увидите позже, этот адрес не обязателен при отправке сообщения клиентом серверу. Другая часть сетевого кода мидлета Lighthouse – это класс LHClient, который очень похож на класс LHServer. Так же, как и LHServer, класс LHClient также реализует интерфейс Runnable:

public class LHClient implements Runnable {

Ниже приведен список членов класса LHClient.

private LHCanvas canvas;

private DatagramConnection dc;

private boolean connected;

Переменные класса должны быть вам знакомы, поскольку они точно такие же, как и в классе LHServer, за исключением отсутствия переменной address. Ниже приведен код конструктора класса LHClient, который выполняет инициализацию некоторых переменных:

public LHClient(LHCanvas c) {

canvas = c;

connected = false;

}

Метод start() класса LHClient точно такой же, как и аналогичный метод класса LHServer, поэтому давайте перейдем к методу run(). В листинге 14.3 приведен код метода run() класса LHClient. Листинг 14.3. Метод run() класса LHClient отвечает на сообщения, полученные от сервера

public void run() {

try {

// соединиться с серверным устройством

canvas.setStatus("Connecting to peer server..."); //Клиент отображает начальное соединение, что говорит о том, что он пытается соединиться с сервером

dc = null;

while (dc == null)

dc = (DatagramConnection)Connector.open("datagram://localhost:5555"); //Номер порта клиента должен совпадать с номером порта сервера

while (true) {

// попытаться отправить сообщение //Если соединение не установлено, отправить клиентское сообщение об установлении соединения серверу

if (!connected)

sendMessage("Client");

// попытаться принять пакет датаграммы

Datagram dg = dc.newDatagram(32);

dc.receive(dg);

// проверить, что датаграмма содержит данные

if (dg.getLength() > 0) {

String data = new String(dg.getData(), 0, dg.getLength());

if (data.equals("Server")) { //Ответить на сообщение сервера о соединении

// оповестить пользователя об установлении соединения

canvas.setStatus("Connected to peer server.");

connected = true;

}

else {

// отправить данные

canvas.receiveMessage(data); //Сообщение содержит символы азбуки Морзе, поэтому его следует передать холсту

}

}

}

}

catch (ConnectionNotFoundException cnfe) {

System.err.println("The network server is unavailable.");

}

catch (IOException ioe) {

}

}

Метод run() класса клиента очень похож на аналогичный метод класса сервера за исключением того, что в классе клиента отсутствует переменная адреса при отправлении датаграммы. Кроме того, URL немного отличается от того, который использовался в классе сервера. И снова важно отметить, что номер порта (5555) должен быть одинаковым для клиента и сервера.

Класс LHClient также реализует метод sendMessage(), который также очень похож на аналогичный метод сервера. В листинге 14.4 приведен код метода sendMessage() клиента.

Листинг 14.4. Метод sendMessage() класса LHClient отправляет строковое сообщение серверу как пакет датаграммы

public void sendMessage(String message) {

// отправить сообщение

try {

// преобразовать строку в массив байтов

byte[] bytes = message.getBytes();

// отправить сообщение

Datagram dg = null; //Упаковка данных в датаграмму и отправка клиенту

dg = dc.newDatagram(bytes, bytes.length);

dc.send(dg);

}

catch (Exception e) {

}

}

Единственное отличие методов sendMessage() сервера и клиента – это то, что версия класса клиента не использует адреса при отправлении пакета серверу. Это незначительное, но очень важное отличие. Холст мидлета Lighthouse Когда классы сервера и клиента созданы, перейдем к созданию холста класса Lighthouse. Класс называется LHCanvas, он выводит на экран информацию о ходе подключения, а также отображает нужную картинку с маяком в соответствии с получаемой информацией.

private Display display;

private boolean sleeping;

private long frameDelay;

private Image[] background = new Image[2]; //Эта переменная говорит о том, является данное приложение образом сервера или клиента

private LHClient client;

private LHServer server;

private boolean isServer;

private String status = "";

private int mode; // 0 = none, 1 = dot, 2 = dash

private int morseTimer;

Переменная background содержит два изображения маяка: с включенным и погашенным огнем. Переменные server и client – это объекты сервера и клиента соответственно, они отвечают за работу мидлета с сетью. Переменная isServer очень важна, она определяет сетевой режим работы мидлета. Эта переменная определяет, как работает мидлет – как клиент или как сервер.

Текст статуса хранится в переменной status. временная mode используется для контроля вывода изображений маяка, а также интервалов времени. Помните, что точка в азбуке Морзе по длительности в три раза меньше тире, поэтому в мидлете Lighthouse используется таймер вывода изображения маяка, который задерживает изображение с включенным огнем в соответствии с отображаемым сигналом. За задержку отвечают переменные mode и morseTimer.

Переменные холста широко используются в методе start(), код которого приведен в листинге 14.5.

Листинг 14.5. Метод start() класса LHCanvas запускает сервис Клиент-Сервер

public void start() {

// установить экран как холст

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


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

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




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


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


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x