MobiLab.ru - программирование для сотовых телефонов и КПК: Symbian C++ и OPL; J2ME, Mobile Basic, MIDlet Pascal, Windows CE, Linux. Есть форум и раздел о безопасности.
В избранное Сделать домашней Контакт
Меню
Главная
Новости
Документация
  - J2ME
  - Android
  - Symbian C++
  - Symbian OPL
  - Basic
  - Windows CE 
  - Linux
  - OpenGL ES
Безопасность
Книги
Софт
Проекты
Форум
Ссылки
Контакт

Книги


Заказать

iPhone SDK. Разработка приложенийДжонатан Здзиарски
Цена:

Подпишись на рассылку



Реклама
Сигары. У нас хьюмидоры по доступной цене. А


04 июня 2009 - Создаем игру с помощью визуальных средств NetBeans. Урок 4 – Соединение с удаленным сервером



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

Для соединения с удаленным сервером будем использовать Java ME Web Service API (JSR 172).

В NetBeans Mobility есть специальный мастер генерирующий JSR172 код для мобильного клиента.

Шаг 1. Создаем новую конфигураци

На этом шаге мы создадим новую конфигурацию в нашем проекте, что позволит нам иметь две версии проекта. Первую мы будем использовать для online игры, а вторую - для offline.

  1. Щелкните правой кнопкой по MobileGameApp в дереве проекта
  2. .
  3. В открывшемся диалоге выберите Add Configuration... в выпадающем меню Project configurations. Откроется Add Configuration диалог.
  4. Введите в качестве имени новой конфигурации OnlineGame и нажмите кнопку Finish.
  5. NetBeans JSR 172
  6. В свойствах проекта выберите Abilities и снимите галочку с Use Values from DefaultConfiguration
  7. Нажмите кнопку Add. В диалоге Add Ability введите имя ONLINE и значение true. Нажмите OK.
  8. NetBeans JSR172 альтернативная конфигурация проекта.
  9. Нажмите OK, чтобы закрыть диалог свойств проекта.

Шаг 2. Генерируем код

На этом шаге с помощью специального мастера мы создадим клиент для Web сервиса.

  1. Выберем File>New File... из главного меню. В появившемся диалоге выберем MIDP категорию и Java ME Web Service Client. Убедитесь, что в дереве проектов выбран MobileGameApp. Нажмите Next.
  2. Теперь нужно указать URL WDSL файла веб сервиса. WDSL может нахдится на вашем локальном диске или на сервере в сети. Для нашего веб сервиса нужно задать следующий URL:
    http://193.86.76.42:8080/DukeHighScores/HighScoresService?WSDL
  3. Выберите Running Web Service.
  4. Введите URL сайта в поле WSDL URL. Нажмите кнопку Retrieve WSDL. В случае, если все проделано правильно, WDSL файл должен автоматически появиться в поле Local Filename.
    Внутренняя проверка WDSL включает несколько этапов. Java ME Web Service Client можно генерировать только для сервисов определенных в JSR 172. Сервис должен быть совместим с WS-I Basic Profile, который не поддерживает асинхронный режим работы, SOAP сообзения с вложениями, и т.д... В случае если сервис не совместим с WS-I Basic Profile, NetBeans мастер даст Вам об этом знать.
  5. Измените имя созданного пакета на org.netbeans.j1.game.client.
  6. Java ME Web Service Client
  7. После нажатия кнопки Finish, в дереве проектов должна появиться новая папка.
  8. NetBeans Project

Шаг 3. Изменяем код игры

  1. Добавляем в конец файла GameMIDlet.java
  2. //TODO: [Exercise 4][step 3] add the getMobileClient() method
      HighScoresService client = null;
      public HighScoresService getMobileClient() {
         if(client == null) {
          client = new HighScoresService_Stub();
         }
        return client;
       }

  3. Добавляем import
  4. Изменяем метод getAddHighScoreTask, который собственно отправляет данные на сервер.
  5.     public SimpleCancellableTask getAddHighScoreTask() {
            if (addHighScoreTask == null) {//GEN-END:|34-getter|0|34-preInit
                // write pre-init user code here
                addHighScoreTask = new SimpleCancellableTask();//GEN-BEGIN:|34-getter|1|34-execute
                addHighScoreTask.setExecutable(new org.netbeans.microedition.util.Executable() {
                    public void execute() throws Exception {//GEN-END:|34-getter|1|34-execute
    //#if ONLINE == "true"
    //# //TODO: [Exercise 4][step 3] set High score
    //# //upload the score to WS
    //# getMobileClient().setHighScore(getNameTextField().getString(), lastHighScore);//upload the name and high score to server
    //# //get the high scores from WS again to synchronize with server side
    //# updateHighScoresTable(getMobileClient().getHighScores());//download the high scores from server
    //#else
                        //just add the score to the scores table
                        addScoreToScoreTable(lastHighScore, getNameTextField().getString());
    //#endif
                        //anyway update the High scores table
                        updateSvgWithHighScores();
                    }//GEN-BEGIN:|34-getter|2|34-postInit
                });//GEN-END:|34-getter|2|34-postInit
            // write post-init user code here
            }//GEN-BEGIN:|34-getter|3|
            return addHighScoreTask;
        }

  6. Обновляем метод getHighScoresTask для загрузки данных с сервера.
  7.     public SimpleCancellableTask getHighScoresTask() {
            if (highScoresTask == null) {//GEN-END:|79-getter|0|79-preInit
                // write pre-init user code here
                highScoresTask = new SimpleCancellableTask();//GEN-BEGIN:|79-getter|1|79-execute
                highScoresTask.setExecutable(new org.netbeans.microedition.util.Executable() {
                    public void execute() throws Exception {//GEN-END:|79-getter|1|79-execute
                        // write task-execution user code here
    //#if (ONLINE == "true")
    //# //TODO: [Exercise 4][step 3] get High Scores
    //# //connect to WS and get the latest scores
    //# updateHighScoresTable(getMobileClient().getHighScores());//download the high scores
    //# //update the high score table
    //# updateSvgWithHighScores();//update the svg image with the latest high scores
    //#else
                        //this code is used when the ONLINE ability value isn't true
                        //nothing to do. The high scores are in the highScoresValues array already
                        Thread.sleep(10);
    //#endif

                    }//GEN-BEGIN:|79-getter|2|79-postInit
                });//GEN-END:|79-getter|2|79-postInit
            // write post-init user code here
            }//GEN-BEGIN:|79-getter|3|
            return highScoresTask;
        }

Шаг 4. Запуск игры

На этом создание игры закончено. Фактически мы сделали две версии игры: offline и online, которая позволяет сравивать свой результат с результатами других играков.

  1. Переключите конфигурацию в DefaultConfiguration
  2. Запустите проект. При этом запустится offline версия.
  3. Переключте конфигурацию на OnlineGame в выпадающем меню в середине панели инструментов.
  4. Запустите проект. При этом запустится online версия.

Новости
Компания velcom объявила конкурс для Android разработчиков

Sony Ericsson SDK 2.5.0.6 for the Java™ ME Platform

Конкурс для разработчиков Windows Mobile Developers 2009

Вышел Android 1.6 SDK

Motodev Studio for Android


Новые статьи
Как сделать телефонный звонок в Android

Рисование линий произвольной толщины в Java2ME

Отрисовка SVG в J2ME без использования JSR 226 API.

Создание моноширинного векторного шрифта для Java2ME.

Использование векторной графики и анимации в Java ME (JSR 226 API)

Обзор существующих Java ME SDK

Создаем игру с помощью визуальных средств NetBeans. Урок 4 – Соединение с удаленным сервером

Создание Google Android виджетов

Создаем игру с помощью визуальных средств NetBeans. Урок 3 – Задаем логику управления персонажем

Создаем игру с помощью визуальных средств NetBeans. Урок 2 – NetBeans Game Builder


[X]    Реклама




Rambler's Top100


© 2005-2009 MobiLab.ru
При использовании материалов сайта ссылка на www.mobilab.ru обязательна