Android: шахматный вопрос, нажмите кнопку, чтобы определить фигуру, а затем 2-ю кнопку, чтобы определить пункт назначения перемещения. - PullRequest
1 голос
/ 06 марта 2011

У меня трудный день, чтобы найти правильный синтаксис поиска:)

Я создаю шахматную игру для Android как часть задания.

Я предполагаю использовать кнопки.

У меня нарисована доска, и я могу выбрать одну кнопку (то есть фигуру, которую я хочу переместить).

Я могу нажать на фигуру (кнопку) и получить тост-вывод, рассказывающий мне о текущемposition.

Мой вопрос заключается в том, как сделать, чтобы первый onClick ждал ввода для моего второго onClick, который будет кнопкой / положением, в которое я хочу переместить фигуру?

Кнопкине следует нажимать одновременно.

Я ценю помощь!

1 Ответ

3 голосов
/ 06 марта 2011

Ваш вопрос действительно сводится к тому, «Как я могу отслеживать состояние игры».Обычно это делается с помощью конечных автоматов.Думайте о состоянии как о моменте времени для пользователя.Например, когда игра запускается впервые, у вас может быть доска с фигурами и ничего не выбрано.Это может быть состояние 1.

1

Теперь подумайте о переходах, которые пользователь может сделать из этого состояния.Переход может быть приближен к взаимодействию с пользователем.Возможно, состояние 1 имеет только один переход, игрок выбирает фигуру.

1 -> (Player selects a piece)

Это приводит нас ко второму состоянию, выбранные фигуры.

1 --> (Player selects a piece) --> 2

Теперь может быть 2 перехода изсостояние 2. Первым будет отмена выбора пользователем (упрощение).Во-вторых, пользователь выберет верный ход (давайте проигнорируем недопустимый аргумент).

1 --> (Player selects a piece) --> 2 --> (player de-selects piece)
                                     \-> (Player selects valid move)

Теперь подумайте, куда вас приведет первый переход.Если не было никакого движения, мы вернулись в квадрат 1 или в состояние 1 на диаграмме :) Если фигура действительно была перемещена, мы, вероятно, перейдем в состояние, в котором мы анимируем движение, предотвращающее ввод, прежде чем мы перейдем обратно в состояние 1.

1 --> (Player selects a piece) --> 2 --> (player de-selects piece) --> 1
                                     \-> (Player selects valid move)  --> 3 [animate] -->1

После того, как вы продумали эти переходы, вы можете реализовать этот механизм состояния несколькими способами.Самым быстрым и грязным, вероятно, будет Enum состояний с механизмом установки и получения текущего состояния в вашем основном игровом классе.Затем в таких методах, как ваш метод onClick, при поступлении щелчка вы проверяете, в каком состоянии вы находитесь, прежде чем разрешить щелчок.В нашем примере щелчок по фигуре в состоянии 1 выберет ее, но в состоянии 2 тот же самый щелчок попытается переместить фигуру в этот квадрат.Действия пользователя имеют различное значение в зависимости от состояния игры.

...