Как отправить события просто в Java? - PullRequest
1 голос
/ 04 июня 2010

Я пишу простую игру Tic Tac Toe на Java. В моем классе Board у меня есть поворотное окно, которое определяет, какая кнопка была нажата. TttGame - это класс, который имеет объект Board.

Цель этой платы не в том, чтобы выступать в роли полнофункциональной платы крест-накрест, а в качестве структуры, в которой класс TttGame контролирует всю логику. Поэтому мне нужно, чтобы доска отправляла какое-то событие, когда кнопка нажата в классе TttGame с идентификатором нажатой кнопки.

Какой самый простой способ сделать это?

edit: Я нашел что-то, называемое шаблоном Observer. Это самый простой способ сделать это?

Ответы [ 2 ]

3 голосов
/ 04 июня 2010

Да, паттерн Observer - это то, что вы хотите применить здесь. Создайте интерфейс прослушивателя (BoardListener), например, так:

public interface BoardListener {
    public void squareSelected(int x, int y);
}

Затем сохраните Set или List слушателей в вашем классе Board и прокрутите их, вызывая squareSelected для каждого, когда выбран квадрат.

Однако я бы посмотрел на шаблон Model-View-Controller, в котором View прослушивает модель на предмет изменений, а Controller обнаруживает действия пользователя и соответственно изменяет модель.

0 голосов
/ 04 июня 2010

Я бы посоветовал немного изменить ваш дизайн. Наличие игровой логики и отслеживание местоположения фигур на доске может быть выполнено в «движке» (или в серии классов без визуального отображения).

В таком случае у вас будет промежуточный класс для сообщения всех местоположений фигур со сменным классом отображения. Он также может обрабатывать любой обмен данными между классом дисплея и движком (например, щелчок для размещения X или O)

P.S. Я думал о шашках, а не о крестиках при наборе текста, но дизайн все еще применим

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