Создаем игру с помощью визуальных средств 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 версия.



Наши соцсети

Подписаться Facebook Подписаться Вконтакте Подписаться Twitter Подписаться Google Подписаться Telegram

Популярное

Ссылки

Новости [1] [2] [3]... Android/ iOS/ J2ME[1] [2] [3]) Android / Архив

Рейтинг@Mail.ru Яндекс.Метрика
MobiLab.ru © 2005-2018
При использовании материалов сайта ссылка на www.mobilab.ru обязательна