Пишу код для шахмат. Столкнулся с проблемой определения корректности хода EnPassant у пешки, то есть, когда вражеская пешка "прыгает" на две клетки и её стоит сразу бить ответным ходом, иначе теряется возможность совершить EnPassant. Не понимаю, как отобразить это в коде, отслеживать ходы всех своих фигур? Буду благодарен за любую конструктивную помощь.
Можно ввести, так называемый флаг (переменную типа boolean) enPassantable которая будет отвечать за возможность данного хода. Тогда условия хода En Passant будет определяться следующим способом:
if(пешка стоит на определенной горизонтали &&
enPassantable для пешки противника == true &&
пешка противника стоит справа или слева) {}
Теперь как же менять этот флажок. Если пешка ходит на две клетки, то enPassantable = true. После того, как противник сделал ход нужно пройтись по всем пешкам (или пешки у которых enPassantable = true хранить где-то в отдельном списке) и присвоить enPassantable = false. Таким образом, следующим ходом противник не сможет сделать данный ход, так как enPassantable будет уже false.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости