|
11 月之前 | |
---|---|---|
.. | ||
img | 11 月之前 | |
Checker.h | 11 月之前 | |
CheckerBoard.cpp | 11 月之前 | |
CheckerBoard.h | 11 月之前 | |
CheckerConsts.h | 11 月之前 | |
CheckerPiece.h | 11 月之前 | |
CheckerPosition.cpp | 11 月之前 | |
CheckerPosition.h | 11 月之前 | |
Checkers.vcxproj | 11 月之前 | |
Checkers.vcxproj.filters | 11 月之前 | |
CheckersAI.cpp | 11 月之前 | |
CheckersAI.h | 11 月之前 | |
README.md | 11 月之前 | |
WORD.docx | 11 月之前 | |
board - Copy.checkers | 11 月之前 | |
board.checkers | 11 月之前 | |
main.cpp | 11 月之前 |
Версия для 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 с применением альфа-бета отсечения.