Ciao a tutti, sto cercando di implementare l'algoritmo min-max per il gioco del tris, però dvo aver commesso un errore che non riesco a trovare... perchè l'IA è abbastanza stupida
spero davvero che mi possiate aiutare... mi serve per preparare un esame... e no riesco a saltarne fuori; non voglio che mi rifacciate il codice... ma piuttosto se mi potreste aiutarmi a individuare il problema

vi scrivo il codice dei due metodi interessati:

codice:
	private int EvalGameState(Model game, int point, Player player){
    	if (game.gameWin() && game.getWinner() == player){//se il vincitore sono io
    		return point;
    	}
    	else if (model.gameWin() && game.getWinner() != player){
    		//il vincitore è il mio avversario
    		return -point;
    	}

		return 0;
	}

	private Move minimax(Move nodo, int depth, Player originalPlayer){
		if (model.gameFinished() || depth ==9) {
			  nodo.setRating(EvalGameState(model, 99999,originalPlayer));
		    return nodo;
		  }
		Move a;
		ArrayList<Move> moves = genMoves(model); //genera l'elenco delle mosse possibili
		if (model.getTurn() != originalPlayer){ //tocca al mio avversario
			a = new Move(); //mossa vuota 
			a.setRating(99999);
			
			for (int i = 0; i<moves.size(); i++){
				model.setMove(moves.get(i)); //gioco la mossa
				Move esplora = minimax(moves.get(i), depth-1, originalPlayer);
				if (a.getRating() > esplora.getRating())
					a = esplora; 
				model.unSetMove(moves.get(i)); //tolgo la mossa
			}
		}
		else {//tocca a me
			a = new Move();
			a.setRating(-99999);
			
			for (int i = 0; i<moves.size(); i++){
				model.setMove(moves.get(i));
				Move esplora = minimax(moves.get(i), depth-1, originalPlayer);
				if (a.getRating() < esplora.getRating())
					a = esplora;
				model.unSetMove(moves.get(i));
			}
		}
		return a;
	}
e richiamo il metodo in questo modo
codice:
bestMove = minimax(new Move(), 0, model.getTurn());
ciao e grazie a tutti!