#19 Программирование шахмат на C# - Тройное повторение II
00:00 Введение и стратегия троекратного повторения • Завершение руководства по шахматам на C. • Стратегия: связать каждое состояние с определённой строкой. • Если строка появляется три раза, происходит троекратное повторение. 00:49 Формат строк состояний • Строки состоят из четырёх частей: данные о расположении фигур, текущий игрок, право на рокировку, поле взятия на проходе. • Первая часть кодирует положение, цвет и тип фигур. • Вторая часть кодирует текущего игрока. • Третья часть кодирует право на рокировку для обоих игроков. • Четвёртая часть кодирует поле взятия на проходе, если игрок может взять на проходе. 02:00 Создание класса StateString • Цель класса: создать строку для заданного состояния. • Конструктор принимает текущего игрока и доску. • Метод добавляет каждую часть строки, разделяя их пробелами. 03:24 Кодирование фигур • Вспомогательный метод pieceChar возвращает символ для фигуры. • Символы для фигур: P, R, B, Q, K. • Пустые клетки кодируются целыми числами. 05:19 Добавление данных о расположении фигур • Метод addPiecePlacement добавляет строку с данными о расположении фигур. • Пустые клетки кодируются количеством подряд идущих пустых клеток. • Каждая строка отделяется косой чертой. 08:38 Добавление информации о текущем игроке • Если ход белых, добавляется W, если чёрных — B. 09:50 Проверка прав на рокировку • Проверка прав на рокировку на королевском и ферзевом флангах. • Если нет права на рокировку, добавляется дефис. • При наличии права добавляются соответствующие символы. 12:14 Добавление информации о взятии на проходе • Если игрок не может взять на проходе, добавляется дефис. • В противном случае добавляется позиция в алгебраической нотации. 14:39 Реализация правила троекратного повторения • Класс состояния игры хранит строку для текущего состояния и словарь «история состояний». • Словарь отслеживает, сколько раз встречалось то или иное состояние. • Метод updateStateString обновляет строку состояния и проверяет, встречалась ли она раньше. 17:56 Проверка на троекратное повторение и завершение игры • Метод проверяет, встречалась ли текущая строка состояния три раза. • При обнаружении троекратного повторения игра завершается с результатом «ничья с троекратным повторением». 19:25 Заключение • Завершение обучающего курса по шахматам на C. • Возможность добавления улучшений и функций в проект. • Призыв подписаться на канал и поддержать автора на Patreon.
00:00 Введение и стратегия троекратного повторения • Завершение руководства по шахматам на C. • Стратегия: связать каждое состояние с определённой строкой. • Если строка появляется три раза, происходит троекратное повторение. 00:49 Формат строк состояний • Строки состоят из четырёх частей: данные о расположении фигур, текущий игрок, право на рокировку, поле взятия на проходе. • Первая часть кодирует положение, цвет и тип фигур. • Вторая часть кодирует текущего игрока. • Третья часть кодирует право на рокировку для обоих игроков. • Четвёртая часть кодирует поле взятия на проходе, если игрок может взять на проходе. 02:00 Создание класса StateString • Цель класса: создать строку для заданного состояния. • Конструктор принимает текущего игрока и доску. • Метод добавляет каждую часть строки, разделяя их пробелами. 03:24 Кодирование фигур • Вспомогательный метод pieceChar возвращает символ для фигуры. • Символы для фигур: P, R, B, Q, K. • Пустые клетки кодируются целыми числами. 05:19 Добавление данных о расположении фигур • Метод addPiecePlacement добавляет строку с данными о расположении фигур. • Пустые клетки кодируются количеством подряд идущих пустых клеток. • Каждая строка отделяется косой чертой. 08:38 Добавление информации о текущем игроке • Если ход белых, добавляется W, если чёрных — B. 09:50 Проверка прав на рокировку • Проверка прав на рокировку на королевском и ферзевом флангах. • Если нет права на рокировку, добавляется дефис. • При наличии права добавляются соответствующие символы. 12:14 Добавление информации о взятии на проходе • Если игрок не может взять на проходе, добавляется дефис. • В противном случае добавляется позиция в алгебраической нотации. 14:39 Реализация правила троекратного повторения • Класс состояния игры хранит строку для текущего состояния и словарь «история состояний». • Словарь отслеживает, сколько раз встречалось то или иное состояние. • Метод updateStateString обновляет строку состояния и проверяет, встречалась ли она раньше. 17:56 Проверка на троекратное повторение и завершение игры • Метод проверяет, встречалась ли текущая строка состояния три раза. • При обнаружении троекратного повторения игра завершается с результатом «ничья с троекратным повторением». 19:25 Заключение • Завершение обучающего курса по шахматам на C. • Возможность добавления улучшений и функций в проект. • Призыв подписаться на канал и поддержать автора на Patreon.




