Мы продолжаем написание шахматных алгоритмов. На этом уроке мы будем защищать короля от ШАХа.
Дата отправки отчёта:
22 мая 2019 г.
Задание выполнено: за
5 час. 59 мин.
Чему научился:
Сделал всё согласно плану. Учиться пытаюсь всё тому же: верно выбирать направление для реализаций кода. Начинаю "предвидеть" некоторые моменты: перед тем, как автор проговаривает действия - останавливаю видео и реализовываю. Потом - проверяю. Конечно, получается далеко не всё.. Но приятно :)
Что было сложным:
Всё ОК. "Подтягиваю" теорию, там где не всё понимаю.
Научился: Подготовил FEN для тестирования;
Дописал функцию Chess().YieldValidMoves();
Реализовал функции IsCheckAfterMove(), CanEatKing(), FindBadKing() и IsCheck() в классе Board();
Доработал функцию Moves().CanKingCastle();
Создал конструктор FigureMoving() для пустого хода;
Протестировал работу до мата. Трудности: Ничего. Ждем большого тестирования =)
Научился: Оказалось, что проверка на шах ломает введённое копирование параметров из board в nextBoard, так что пока вернул ресурсоёмкую генерацию всех параметров при пересоздании доски, но позже вернусь к этому вопросу.
Ещё нашёл и исправил ошибку с упущенными скобками, которые не позволяли ладье совершить рокировку. Ничто так не позволяет понять строение проекта, как дебаггинг :)