|
@@ -0,0 +1,48 @@
|
|
|
|
+# Шашки
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+## CheckerPiece
|
|
|
|
+Перечисление `CheckerPiece` содержит в себе все возможные виды шашек на доске:
|
|
|
|
+- Пустая ячейка
|
|
|
|
+- Белая шашка
|
|
|
|
+- Белая дамка
|
|
|
|
+- Черная шашка
|
|
|
|
+- Черная дамка
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+## CheckerPosition
|
|
|
|
+Класс `CheckerPosition` представляет собой позицию на доске, описываемую координатами X и Y:
|
|
|
|
+- `isValid()` - возможна ли позиция на доске
|
|
|
|
+- `to_num_string()` - сериализовать в вид точки. Например: (1, 0)
|
|
|
|
+- `to_string()` - сериализовать в текстовый вид. Например: F3
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+## CheckerBoard
|
|
|
|
+Класс `CheckerBoard` представляет собой доску.
|
|
|
|
+- `board` - матрица, представляющая ячейки доски
|
|
|
|
+- `lastMove` - текстовое описание последнего шага на доске
|
|
|
|
+- `moveNewPos` - конечная позиция последнего шага на доске
|
|
|
|
+- `moveOldPos` - стартовая позиция последнего шага на доске
|
|
|
|
+- `applyMove()` – применить ход с альтернативной доски на текущую
|
|
|
|
+- `evaluate()` – рассчитать «счет» доски (чем больше – тем сильнее преимущество белых, чем меньше – тем сильнее преимущество черных)
|
|
|
|
+- `generateAdditionalCaptures()` – просчитать возможные последовательные ходы (когда «срубаем» больше одной шашки за раз)
|
|
|
|
+- `generateLegalMoves()` – просчитать все возможные шаги на текущей доске для определенной стороны
|
|
|
|
+- `generateMovesForPiece()` – просчитать все возможные шаги на текущей доске для определенной шашки
|
|
|
|
+- `getCheckerAt()` – получить тип пешки на данной ячейке
|
|
|
|
+- `isGameOver()` – окончена ли игра (победа одной из сторон)
|
|
|
|
+- `isValidCapture()` – возможно ли «срубить» пешку данным ходом
|
|
|
|
+- `isValidMove()` – возможен ли данный ход
|
|
|
|
+- `loadFromFile()` – загрузить положение пешек на доске из файла
|
|
|
|
+- `moveChecker()` – переместить шашку с учетом дополнительных условий («срубить» стоящие на пути и превратиться в дамку при достижении края доски)
|
|
|
|
+- `print()` – вывести доску в консоль
|
|
|
|
+- `setCheckerAt()` – установить шашку данного типа в данной ячейке
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+## CheckersAI
|
|
|
|
+Класс `CheckersAI` представляет собой искусственный интеллект для игры в шашки
|
|
|
|
+`isWhite` - за белых ли играет ИИ
|
|
|
|
+`minimax()` – рекурсивный рассчет «счёта» доски с учетом будущих ходов
|
|
|
|
+`findBestMove()` – найти самый оптимальный текущий ход, исходя из «счёта», рассчитанного в minimax
|
|
|
|
+
|
|
|
|
+Искусственный интеллект реализован с помощью алгоритма minimax с применением альфа-бета отсечения.
|