Проверка ходов в шахматах

130
24 февраля 2018, 21:39

Пишу код для шахмат. Столкнулся с проблемой определения корректности хода EnPassant у пешки, то есть, когда вражеская пешка "прыгает" на две клетки и её стоит сразу бить ответным ходом, иначе теряется возможность совершить EnPassant. Не понимаю, как отобразить это в коде, отслеживать ходы всех своих фигур? Буду благодарен за любую конструктивную помощь.

Answer 1

Можно ввести, так называемый флаг (переменную типа boolean) enPassantable которая будет отвечать за возможность данного хода. Тогда условия хода En Passant будет определяться следующим способом:

if(пешка стоит на определенной горизонтали && 
   enPassantable для пешки противника == true &&
   пешка противника стоит справа или слева) {}

Теперь как же менять этот флажок. Если пешка ходит на две клетки, то enPassantable = true. После того, как противник сделал ход нужно пройтись по всем пешкам (или пешки у которых enPassantable = true хранить где-то в отдельном списке) и присвоить enPassantable = false. Таким образом, следующим ходом противник не сможет сделать данный ход, так как enPassantable будет уже false.

READ ALSO
Получить данные из POST запроса в PlayFramework

Получить данные из POST запроса в PlayFramework

Отправляю post-запросом файл,

175
Как распределить логику между классами UI

Как распределить логику между классами UI

У меня есть класс которые в себе содержит логику RecyclerView, также в этом классе содержится логика меню, а помимо этого еще toolBar и другие компоненты...

129
GET запрос Retrofit 2

GET запрос Retrofit 2

Помогите разобраться с запросом Retrofit 2

152
Бэкенд java. Связь с фронтендом. Сервер

Бэкенд java. Связь с фронтендом. Сервер

Есть вопрос концептуального и общего характераЯ не очень понимаю каким образом реализуется бэкенд на java

128