コード例 #1
0
ファイル: Pieza.java プロジェクト: jhonfrayser/JuegoDeAjedrez
  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;
  }