private void initComponentesAnimacion() {

        addMouseListener(new java.awt.event.MouseAdapter() {

            @Override
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }

            private void formMouseClicked(MouseEvent evt) {

                int xClicked = evt.getX();
                int torre = getTorre(xClicked);
                int fichaSuperior;

                if (torre != 0) {

                    if (torreOrigen == 0) {

                        ficha = getFichaSuperior(posiciones, torre, true);
                        torreOrigen = torre;

                    } else {
                        torreDestino = torre;
                        fichaSuperior = getFichaSuperior(posiciones, torreDestino, false);

                        if (ficha <= fichaSuperior && torreOrigen != torreDestino) {

                            numeroDeMovimientos++;
                            movimiento = new Movimiento(ficha, torreOrigen, torreDestino);
                            if (movimiento.getTorreDestino() == 1) {
                                palitoFinal1 = palito2;
                                palitoFinal2 = palito;
                                palitoFinal3 = palito;
                            } else if (movimiento.getTorreDestino() == 2) {
                                palitoFinal2 = palito2;
                                palitoFinal1 = palito;
                                palitoFinal3 = palito;
                            } else if (movimiento.getTorreDestino() == 3) {
                                palitoFinal3 = palito2;
                                palitoFinal1 = palito;
                                palitoFinal2 = palito;
                            }
                            timer.restart();
                        }
                        torreOrigen = 0;
                    }
                }

            }
        });

        fichasEnTorre = new int[LIMITE_TORRES + 1];
        fichasEnTorre[1] = noFichas;
        fichasEnTorre[2] = 0;
        fichasEnTorre[3] = 0;
        ficha = 1;

        posiciones = new Posicion[9];
        for (int i = 1; i <= noFichas; i++) {
            int w = noFichas - i + 1;
            posiciones[i] = new Posicion(posicionFichaX(i, 1), posicionFichaY(w));
        }
        x = posiciones[1].getX();
        y = posiciones[1].getY();
        movimientoCompletado = false;
        paso = 1;
    }