Я пытаюсь создать tictactoe игру с MiniMax Ai, я застрял на функции минимакса, она всегда возвращает 0, но я понятия не имею, почему.
namespace TicTacToeMiniMax
{
class AiBrain
{
int Score;
int BestMoveStorage;
Board BoardCopy;
public void BestMove(Board board)
{
BoardCopy = board;
for(int x = BoardCopy.BoardList.Count(); x > 0; x--)
{
if (BoardCopy.ReturnBoardValue(x) == "Z")
{
BoardCopy.MakeMove(x, "X", true);
int TempScore = Minimax(0, false);
BoardCopy.MakeMove(x, "Z", true);
if (TempScore > Score)
{
Score = TempScore;
BestMoveStorage = x;
}
}
}
}
private int Minimax(int depth, bool IsMax)
{
string Result = BoardCopy.CheckWinAi();
if(Result != "Z")
{
switch (Result)
{
case "X":
return 1;
case "O":
return -1;
case "Gelijk":
return 0;
}
}
if (IsMax)
{
int BestScore = -0;
for (int x = BoardCopy.BoardList.Count(); x > 0; x--)
{
if (BoardCopy.ReturnBoardValue(x) == "Z")
{
BoardCopy.MakeMove(x, "X", true);
int Score = Minimax(depth + 1, false);
BoardCopy.MakeMove(x, "Z", true);
if (Score > BestScore)
{
BestScore = Score;
}
}
}
return BestScore;
}
else
{
int BestScore = 0;
for (int x = BoardCopy.BoardList.Count(); x > 0; x--)
{
if (BoardCopy.ReturnBoardValue(x) == "Z")
{
BoardCopy.MakeMove(x, "O", true);
int Score = Minimax(depth + 1, true);
BoardCopy.MakeMove(x, "Z", true);
if (Score < BestScore)
{
BestScore = Score;
}
}
}
return BestScore;
}
}
public int MakeMove()
{
return BestMoveStorage;
}
}
}
Выше мой класс ИИ но он просто возвращает 0. Класс Board содержит список из 9 строк («X», «O» и «Z» для пустых мест). У него также есть классы для проверки, является ли место пустым, и функция проверки выигрыша.
Спасибо.