public int minimax(Board b) { //player1 is AI
//depth+=10;
System.out.println("Current board is " );
System.out.println("To play now on this board is " + b.whoseTurn.getId() );
b.display();
if( (GameController.hasWon(b.whoseTurn,b))
|| (GameController.hasWon(b.whoseNotInTurn, b))
|| (GameController.isDraw(b.whoseTurn,b,b.whoseNotInTurn))) {
return evaluate(b);
}
ArrayList<Integer> possibleMoves = generateMoves(b);
if(b.whoseTurn.getId() == "AI") {
bestScore = -1000000;
for(int i = 0; i < possibleMoves.size(); i++) {
int move = possibleMoves.get(i);
b.myBoard.get(move).setSymbol(b.whoseTurn.getSymbol());
swapPlayers(b);
score = minimax (b);
if(score > bestScore) {
bestScore = score;
bestMove = move;
System.out.println("In maximum Move is " + move + "BESTScore is" + score);
}
unmakeMove(b.myBoard.get(move));
}
return bestMove;
}
else {
bestScore = 1000000;
for(int i = 0; i < possibleMoves.size(); i++) {
int move = possibleMoves.get(i);
b.myBoard.get(move).setSymbol(b.whoseTurn.getSymbol());
swapPlayers(b);
score = minimax(b);
if(score < bestScore) {
myMoves.add(move);
bestScore = score;
bestMove = move;
System.out.println("In minimum Move is " + move + "Score is" + score);
}
unmakeMove(b.myBoard.get(move));
}
return bestMove;
}
Where am I making a mistake here? Here is a link to the entire code.