Я пытаюсь построить простой минимаксный алгоритм для непобедимого ИИ для игры в крестики-нолики.код работает нормально, но переменная-держатель flag
не меняет значение в конце кода.Вот соответствующая часть:
int minimax (String[] board, boolean OTurn, int Depth)
{
int flag = -1;
int[] x = getAvailableMoves(board);
ArrayList<Integer> results = new ArrayList<Integer>();
ArrayList<Integer> pos = new ArrayList<Integer>();
int arrayListSize = 0;
if(Depth == maxDepth)
{
flag = Score(checkForGameState(board));
System.out.println("set flag to score");
}
else if(OTurn)
{
System.out.println("entered oturn");
iteration = 0;
int[] j = getAvailableMoves(board);
for(int i = 0; i < j.length; i++)
{
board[i] = "X";
results.add(minimax(board, false, Depth + 1));
arrayListSize++;
pos.add(i);
board[i] = "";
iteration++;
}
}
else if(!OTurn)
{
System.out.println("entered Xturn");
iteration = 0;
int[] k = getAvailableMoves(board);
for(int i = 0; i < k.length; i++)
{
board[i] = "O";
/*results.add(*/minimax(board, true, Depth + 1)/*)*/;
//pos.add(i);
board[i] = "";
iteration++;
}
}
return flag;
}
Этот метод возвращает -1 при запуске с доской, которая:
X | |
| |
| |
(или массив плат, заполненный { "X", "" , "" , "" , "" , "" , "" , "" , ""}
).