瀏覽代碼

Update readme.md for Checkers

Vsevolod Levitan 10 月之前
父節點
當前提交
2150c84c21
共有 2 個文件被更改,包括 48 次插入0 次删除
  1. 48 0
      Checkers/Checkers/README.md
  2. 二進制
      Checkers/Checkers/img/classes.png

+ 48 - 0
Checkers/Checkers/README.md

@@ -0,0 +1,48 @@
+# Шашки
+
+![Классы](./img/classes.png)
+
+## 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 с применением альфа-бета отсечения.

二進制
Checkers/Checkers/img/classes.png