public boolean validarMovimiento(CuadroPieza Destino, Tablero tbl) { if (Destino.getPieza() != null) { // Si el cuadro destino esta ocupado entonces: if (Destino.getPieza().getColor() == getCuadroPieza().getPieza().getColor()) { // Si la pieza destino tiene el mismo color que la pieza que voy a mover return false; // El movimiento es invalido, no puedo comer una pieza de mi mismo equipo. } } // ---Valido que no su rey no entre en jacke despues de que se mueva. Pieza tmpDestino = Destino.getPieza(); // Guardo las piezas en temporales, para deshacer los cambios Pieza tmpActual = getCuadroPieza().getPieza(); // Guardo las piezas en temporales, para deshacer los cambios CuadroPieza Actual = getCuadroPieza(); // El cuadro dode actualmente esta la pieza, tambien lo guardo. Actual.setPieza(null); // simulo un movimiento, dejo el cuadro actual en vacio Destino.setPieza(this); // Muevo esta pieza al cuadro destino // Valido si despues de que mueva, el rey esta en jacke. boolean b = tbl.getRey(getColor()) .isInJacke( tbl); // Para lo cual obtengo el rey del mismo color de la pieza y le pregunto si // esta en jacke Actual.setPieza(tmpActual); // Deshago los cambios, porque SOLO valido, NO muevo piezas Destino.setPieza(tmpDestino); // Deshago los cambios, porque solo valido, NO muevo piezas /* * Si retorna que esta en jacke(b=true), entonces el movimiento es invalido, * Si retorna que no esta en jacke(b=false), el mov. es valido. */ return !b; }