|
|
1 рік тому | |
|---|---|---|
| .. | ||
| img | 1 рік тому | |
| Checker.h | 1 рік тому | |
| CheckerBoard.cpp | 1 рік тому | |
| CheckerBoard.h | 1 рік тому | |
| CheckerConsts.h | 1 рік тому | |
| CheckerPiece.h | 1 рік тому | |
| CheckerPosition.cpp | 1 рік тому | |
| CheckerPosition.h | 1 рік тому | |
| Checkers.vcxproj | 1 рік тому | |
| Checkers.vcxproj.filters | 1 рік тому | |
| CheckersAI.cpp | 1 рік тому | |
| CheckersAI.h | 1 рік тому | |
| README.md | 1 рік тому | |
| WORD.docx | 1 рік тому | |
| board - Copy.checkers | 1 рік тому | |
| board.checkers | 1 рік тому | |
| main.cpp | 1 рік тому | |
Версия для Microsoft Word находится в файле WORD.docx. Названия файлов кликабельны
Перечисление CheckerPiece (CheckerPiece.h) содержит в себе все возможные виды шашек на доске:
Класс CheckerPosition (CheckerPosition.h, CheckerPosition.cpp) представляет собой позицию на доске, описываемую координатами X и Y:
isValid() - возможна ли позиция на доскеto_num_string() - сериализовать в вид точки. Например: (1, 0)to_string() - сериализовать в текстовый вид. Например: F3Класс CheckerBoard (CheckerBoard.h, CheckerBoard.cpp) представляет собой доску.
board - матрица, представляющая ячейки доскиlastMove - текстовое описание последнего шага на доскеmoveNewPos - конечная позиция последнего шага на доскеmoveOldPos - стартовая позиция последнего шага на доскеapplyMove() – применить ход с альтернативной доски на текущуюevaluate() – рассчитать «счет» доски (чем больше – тем сильнее преимущество белых, чем меньше – тем сильнее преимущество черных)generateAdditionalCaptures() – просчитать возможные последовательные ходы (когда «срубаем» больше одной шашки за раз)generateLegalMoves() – просчитать все возможные шаги на текущей доске для определенной стороныgenerateMovesForPiece() – просчитать все возможные шаги на текущей доске для определенной шашкиgetCheckerAt() – получить тип пешки на данной ячейкеisGameOver() – окончена ли игра (победа одной из сторон)isValidCapture() – возможно ли «срубить» пешку данным ходомisValidMove() – возможен ли данный ходloadFromFile() – загрузить положение пешек на доске из файлаmoveChecker() – переместить шашку с учетом дополнительных условий («срубить» стоящие на пути и превратиться в дамку при достижении края доски)print() – вывести доску в консольsetCheckerAt() – установить шашку данного типа в данной ячейкеКласс CheckersAI (CheckersAI.h, CheckersAI.cpp) представляет собой искусственный интеллект для игры в шашки
isWhite - за белых ли играет ИИ
minimax() – рекурсивный рассчет «счёта» доски с учетом будущих ходов
findBestMove() – найти самый оптимальный текущий ход, исходя из «счёта», рассчитанного в minimax
Искусственный интеллект реализован с помощью алгоритма minimax с применением альфа-бета отсечения.