Переменная держателя не меняет значение - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь построить простой минимаксный алгоритм для непобедимого ИИ для игры в крестики-нолики.код работает нормально, но переменная-держатель 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", "" , "" , "" , "" , "" , "" , "" , ""}).

...