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

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 с применением альфа-бета отсечения.