public boolean move(int i, int i0, int i1, int i2) {
        if (canMove(i, i0)) {
            for (int[] hint : getHints(i, i0)) {
                if ((i1 == hint[0]) && (i2 == hint[1])) {
                    //se arrivo in fondo, devo creare un damone
                    if (((i1 == 0) || (i1 == 8 - 1)) && (tabellone[i][i0] < 3)) {
                        tabellone[i1][i2] = tabellone[i][i0] + 2;
                    } else {
                        tabellone[i1][i2] = tabellone[i][i0];
                    }
                    tabellone[i][i0] = VUOTO;
                    setChanged();
                    notifyObservers();
                    return true;
                }
            }
        }
        return false;
    }