Передача вопросов клиенту с помощью Adobe BlazeDS / LiveCycle - PullRequest
1 голос
/ 22 июля 2010

За последние несколько недель я создавал своего рода текстовую приключенческую игру, вращающуюся исключительно вокруг действий игрока. Общая идея заключается в том, что существует класс Simulation, который поддерживает состояние мира и является обязанностью SimulationController (т. Е. Игрока) за продолжение действий. В большинстве случаев будет сказано, что Контроллер говорит Моделированию, что делать (то есть, имитировать 1 шаг вперед), но иногда Моделированию нужно что-то спросить у контроллера. Таким образом, я создал такой интерфейс:

/**
 * An interface to a GUI, command line, etc;
 * a way to interact with the Simulation class
 * @author dduckworth
 *
 */
public interface SimulationController {

    /**
     * Returns the index of a choice from a list
     * 
     * @param message: prompt for the player
     * @param choices: options, in order
     * @return: the index of the choice chosen
     */
    public int chooseItem(String message, List<String> choices);

    /**
     * Returns some text the player must type in manually.
     * 
     * @param message
     * @return
     */
    public String enterChoice(String message);

    /**
     * Give the user a message.  This could be notification
     * of a failed action, some response to some random event,
     * anything.
     * 
     * @param message
     */
    public void giveMessage(String message);

    /**
     * The simulation this controller is controlling
     * @return
     */
    public Simulation getSimulation();

    /**
     * The primary loop for this controller.  General flow
     * should be something like this:
     * 1)   Prompt the player to choose a tool and target
     *      from getAvailableTools() and getAvailableTargets()
     * 2)   Prompt the player to choose an action from
     *      getAvailableActions()
     * 3)   call Simuluation.simulate() with the tool, target,
     *      action chosen, the time taken to make that decision,
     *      and this
     * 4)   while Simulation.isFinished() == false, continue onward
     */
    public void run();
}

Основной цикл управления во всем этом должен быть реализован в SimulationController.run(), но симуляция также может вызывать другие методы для запроса некоторой информации от игрока.

В настоящее время я использую Adobe Flex с BlazeDS для создания очень простого пользовательского интерфейса, который будет взаимодействовать с Simulation путем реализации или хранения чего-либо, реализующего интерфейс SimulationController. Существует понятие «длинный опрос», но я не признаю, что знал, как использовать его с такими удаленными объектами, как этот.

У меня вопрос: каков хороший шаблон проектирования для передачи информации в проигрыватель, чтобы все запросы Simulation направлялись прямо во Flash-клиент и чтобы вся логика цикла управления могла оставаться на стороне Java?

Спасибо!

1 Ответ

0 голосов
/ 23 июля 2010

Читайте в вики о Технология Push , чтобы понять основные понятия.После этого прочитайте раздел обмена сообщениями из руководства разработчика BlazeDS.

Я предполагаю, что у вас есть некоторый опыт работы с BlazeDS .. (по крайней мере, вы установили его на каком-либо сервере приложений).Загляните в папку с примерами, и вы найдете два интересных примера (приложение чата и еще одно приложение под названием datapush).Они довольно просты для понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...