private int priorityTree(int y, int x, int level, boolean turn, Pezzi[][] campo, int direction) {

        //se la direzione è -1 la pedina non può muoversi, di conseguenza il thread terminerà con 0
        // se invece ha un valore diverso compreso tra 0 e 3 il calcolo delle possibilità inizierà
        if (direction == -1) {
            return 0;
        }

        //inizio valutazione mossa
        int n = 0;
        if (level > 0) {

            Integer[] posPossible = campo[y][x].posPosible();
            if (posPossible[direction * 2] != null) {
                //controllare in che direzzione sto andando 
                n += nextPositionGhost(y, x, posPossible[direction * 2], posPossible[direction * 2 + 1], turn, campo);
            }
            //zona ciclica dove si iniziera il gioco virtuale

            for (int i = 0; i < 8; i++) {
                for (int j = 0; j < 8; j++) {
                    if (campo[i][j] != null && campo[i][j].getColore() == Color.BLACK) {

                        int cd;
                        int cal = 0;
                        if (campo[i][j] instanceof Pedina) {
                            cd = controlDirection(campo[i][j].posPosible(), 0, campo[i][j]); // controllo nelle posizioni dei sottoalberi, se non sono possibili altre mosse in quella direzione il Thread si killa
                            cal = priorityTree(i, j, level - 1, !turn, cloneCampo(campo), cd);
                            cd = controlDirection(campo[i][j].posPosible(), 1, campo[i][j]);
                            cal += priorityTree(i, j, level - 1, !turn, cloneCampo(campo), cd);
                        } else {
                            cd = controlDirection(campo[i][j].posPosible(), 0, campo[i][j]);
                            cal = priorityTree(i, j, level - 1, !turn, cloneCampo(campo), cd);
                            cd = controlDirection(campo[i][j].posPosible(), 1, campo[i][j]);
                            cal += priorityTree(i, j, level - 1, !turn, cloneCampo(campo), cd);
                            cd = controlDirection(campo[i][j].posPosible(), 2, campo[i][j]);
                            cal += priorityTree(i, j, level - 1, !turn, cloneCampo(campo), cd);
                            cd = controlDirection(campo[i][j].posPosible(), 3, campo[i][j]);
                            cal += priorityTree(i, j, level - 1, !turn, cloneCampo(campo), cd);
                        }
                        n += cal;
                    }
                }
            }
        }
        return n;

    }