#14 Программирование шахмат на C# - взятие на проходе

00:00 Введение в захват en passant • Пешки могут продвинуться на две клетки вперёд своим первым ходом. • На следующем ходу пешка противника может захватить её, как если бы она переместилась всего на одну клетку. • Это называется захватом "на проходе". 01:19 Реализация взятия "на проходе" • Добавляем две позиции для каждого игрока в словаре «позиции для пропуска пешек». • Изначально обе позиции должны быть нулевыми. • При перемещении пешки на две клетки сохраняем позицию, которую она пропустила. 02:30 Методы для работы с позициями • Метод getPawnSkipPosition возвращает позицию пропущенной клетки. • Метод настройки сохраняет позицию в словаре. 03:10 Ход «Двойная пешка» • Добавляем новый ход «Двойная пешка» для продвижения на две клетки. • Ход имеет тип «двойная пешка», координаты «от» и «до», а также переменную для пропущенной позиции. • Конструктор сохраняет позиции «от» и «до», а истинная позиция всегда равна позиции «от» плюс два шага вперёд. 05:21 Метод execute для хода «Двойная пешка» • Находим движущегося игрока и сохраняем пропущенную позицию на доске. • Перемещаем пешку обычным ходом. 06:20 Ход для захвата при прохождении • Создаём ход для диагонального перемещения пешки для захвата при прохождении. • Ход имеет тип «на человека», позиции «туда» и «обратно», а также позицию захваченной пешки. • Конструктор инициализирует позиции, а захваченная пешка должна находиться в строке и столбце, из которых мы перемещаемся. 08:23 Метод execute для хода для захвата • Передвигаем пешку и убираем захваченную пешку с доски. 09:12 Реализация в классе пешек • В методе движения вперёд заменяем обычный ход на «двойную пешку». • При диагональных ходах проверяем, была ли позиция пропущена пешкой противника на предыдущем ходу. • Если да, генерируем ход для захвата. 10:51 Исправление проблемы с устаревшими позициями • Сбрасываем позицию пропуска для текущего игрока в начале каждого хода. • Это предотвращает устаревшие позиции из-за старых ходов. 12:44 Проверка работы • Убеждаемся, что захват en passant возможен только на следующем ходу после двойного хода. • Все специальные ходы в шахматах применены. 12:44 Заключение • В следующей части добавим меню для перезапуска игры.

Иконка канала Ленинский Букварь
253 подписчика
12+
4 просмотра
22 дня назад
12+
4 просмотра
22 дня назад

00:00 Введение в захват en passant • Пешки могут продвинуться на две клетки вперёд своим первым ходом. • На следующем ходу пешка противника может захватить её, как если бы она переместилась всего на одну клетку. • Это называется захватом "на проходе". 01:19 Реализация взятия "на проходе" • Добавляем две позиции для каждого игрока в словаре «позиции для пропуска пешек». • Изначально обе позиции должны быть нулевыми. • При перемещении пешки на две клетки сохраняем позицию, которую она пропустила. 02:30 Методы для работы с позициями • Метод getPawnSkipPosition возвращает позицию пропущенной клетки. • Метод настройки сохраняет позицию в словаре. 03:10 Ход «Двойная пешка» • Добавляем новый ход «Двойная пешка» для продвижения на две клетки. • Ход имеет тип «двойная пешка», координаты «от» и «до», а также переменную для пропущенной позиции. • Конструктор сохраняет позиции «от» и «до», а истинная позиция всегда равна позиции «от» плюс два шага вперёд. 05:21 Метод execute для хода «Двойная пешка» • Находим движущегося игрока и сохраняем пропущенную позицию на доске. • Перемещаем пешку обычным ходом. 06:20 Ход для захвата при прохождении • Создаём ход для диагонального перемещения пешки для захвата при прохождении. • Ход имеет тип «на человека», позиции «туда» и «обратно», а также позицию захваченной пешки. • Конструктор инициализирует позиции, а захваченная пешка должна находиться в строке и столбце, из которых мы перемещаемся. 08:23 Метод execute для хода для захвата • Передвигаем пешку и убираем захваченную пешку с доски. 09:12 Реализация в классе пешек • В методе движения вперёд заменяем обычный ход на «двойную пешку». • При диагональных ходах проверяем, была ли позиция пропущена пешкой противника на предыдущем ходу. • Если да, генерируем ход для захвата. 10:51 Исправление проблемы с устаревшими позициями • Сбрасываем позицию пропуска для текущего игрока в начале каждого хода. • Это предотвращает устаревшие позиции из-за старых ходов. 12:44 Проверка работы • Убеждаемся, что захват en passant возможен только на следующем ходу после двойного хода. • Все специальные ходы в шахматах применены. 12:44 Заключение • В следующей части добавим меню для перезапуска игры.

, чтобы оставлять комментарии