Skip to content

Darkhhh/TicTacToeWPF

Repository files navigation

TicTacToeWPF

Оконное приложение для игры в крестики-нолики.

Предоставляет два режима игры: против человека и против компьютера. Компьютер имеет два эвристических алгоритма выбора хода: минимакс и минимакс с альфа-бета отсечением.

Оптимизированный алгоритм после «прохода» по одной из ветвей дерева решений «отсекает» ветви, заведомо не имеющие оптимального решения, относительно коэффициентов альфа и бета, полученных на первом проходе. Альфа — это минимально возможная оценка, которую может получить максимизирующий игрок, инициализируется значением минус бесконечности и наоборот. Если в одном из узлов ветви значения альфа больше либо равно бета, найден ход, который гарантирует победу максимизирующему игроку. Если значения этих параметров в текущем узле не улучшаются, ветвь не следует рассматривать, поскольку все ее «потомки», как и она сама, не содержат оптимального решения. Глубина прохода задается при вызове функции ComputerPlayer.MinMaxAlphaBeta.

public static (int, (int, int)) MinMaxAlphaBeta(GameBoard board, bool isMaximizing, int depth = 10, int alpha = -int.MaxValue, int beta = int.MaxValue)
{
  ...
}

Так как работа алгоритма может быть достаточно продолжительной, во избежание "заморозки" интерфейса, вызовы реализованы асинхронно.

Окна интерфейса

Приветственый экран

Экран выбора режима и размера поля

Игровой экран

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages