Vsevolod Levitan ec1840aced Fix method not found in Checkers hace 11 meses
..
img 2150c84c21 Update readme.md for Checkers hace 11 meses
Checker.h 7fb2d4fed5 Added checkers hace 11 meses
CheckerBoard.cpp ec1840aced Fix method not found in Checkers hace 11 meses
CheckerBoard.h be817c1009 Added comments and reformatted hace 11 meses
CheckerConsts.h 7fb2d4fed5 Added checkers hace 11 meses
CheckerPiece.h 7fb2d4fed5 Added checkers hace 11 meses
CheckerPosition.cpp be817c1009 Added comments and reformatted hace 11 meses
CheckerPosition.h be817c1009 Added comments and reformatted hace 11 meses
Checkers.vcxproj 7fb2d4fed5 Added checkers hace 11 meses
Checkers.vcxproj.filters 7fb2d4fed5 Added checkers hace 11 meses
CheckersAI.cpp be817c1009 Added comments and reformatted hace 11 meses
CheckersAI.h be817c1009 Added comments and reformatted hace 11 meses
README.md 0e10df32b8 Updated readme for Checkers hace 11 meses
WORD.docx 4cd5f2ab6c Updated readme for Checkers hace 11 meses
board - Copy.checkers a890814782 Updated checkers hace 11 meses
board.checkers a890814782 Updated checkers hace 11 meses
main.cpp be817c1009 Added comments and reformatted hace 11 meses

README.md

Шашки

Версия для Microsoft Word находится в файле WORD.docx. Названия файлов кликабельны

Классы

CheckerPiece

Перечисление CheckerPiece (CheckerPiece.h) содержит в себе все возможные виды шашек на доске:

  • Пустая ячейка
  • Белая шашка
  • Белая дамка
  • Черная шашка
  • Черная дамка

CheckerPosition

Класс CheckerPosition (CheckerPosition.h, CheckerPosition.cpp) представляет собой позицию на доске, описываемую координатами X и Y:

  • isValid() - возможна ли позиция на доске
  • to_num_string() - сериализовать в вид точки. Например: (1, 0)
  • to_string() - сериализовать в текстовый вид. Например: F3

CheckerBoard

Класс CheckerBoard (CheckerBoard.h, CheckerBoard.cpp) представляет собой доску.

  • board - матрица, представляющая ячейки доски
  • lastMove - текстовое описание последнего шага на доске
  • moveNewPos - конечная позиция последнего шага на доске
  • moveOldPos - стартовая позиция последнего шага на доске
  • applyMove() – применить ход с альтернативной доски на текущую
  • evaluate() – рассчитать «счет» доски (чем больше – тем сильнее преимущество белых, чем меньше – тем сильнее преимущество черных)
  • generateAdditionalCaptures() – просчитать возможные последовательные ходы (когда «срубаем» больше одной шашки за раз)
  • generateLegalMoves() – просчитать все возможные шаги на текущей доске для определенной стороны
  • generateMovesForPiece() – просчитать все возможные шаги на текущей доске для определенной шашки
  • getCheckerAt() – получить тип пешки на данной ячейке
  • isGameOver() – окончена ли игра (победа одной из сторон)
  • isValidCapture() – возможно ли «срубить» пешку данным ходом
  • isValidMove() – возможен ли данный ход
  • loadFromFile() – загрузить положение пешек на доске из файла
  • moveChecker() – переместить шашку с учетом дополнительных условий («срубить» стоящие на пути и превратиться в дамку при достижении края доски)
  • print() – вывести доску в консоль
  • setCheckerAt() – установить шашку данного типа в данной ячейке

CheckersAI

Класс CheckersAI (CheckersAI.h, CheckersAI.cpp) представляет собой искусственный интеллект для игры в шашки isWhite - за белых ли играет ИИ minimax() – рекурсивный рассчет «счёта» доски с учетом будущих ходов findBestMove() – найти самый оптимальный текущий ход, исходя из «счёта», рассчитанного в minimax

Искусственный интеллект реализован с помощью алгоритма minimax с применением альфа-бета отсечения.