Java - Por favor necesito ayuda!!!!! (ajedrez)

 
Vista:

Por favor necesito ayuda!!!!! (ajedrez)

Publicado por Alba (1 intervención) el 16/03/2009 23:23:36
Hola!!!! Estoy realizando un juego de ajedrez en java ( es un proyecto para una clase de mi universidad), la verdad es que lo tengo terminado...pero el profesor me ha dicho que el código de la clase caballo es una "guarreria" porque el método que he puesto desplaza no deberia estar y menos ese break que he puesto. Por favor necesito ayuda para realizar esta clase mejor debe de ser algo muy sencillo pero yo ahora mismo no caigo y estoy muy agoviada.......si alguien pudiera ayudarme....gracias!!
El codigo es:
/**
* Clase Caballo, clase que describe los movimientos que podemos hacer con la pieza Caballo.
*
* @author Alba De Juanas Sanz.
* @version (a version number or a date)
*/

public class Caballo
extends Pieza {


/** Creacion del Logger.
*/
private static final Logger LOGGER=Logger.getLogger("piezas.Caballo");



/**
* Constructor de la clase.
* @param bando blancas o negras.
*/
public Caballo(Bando bando)
{
super("C",bando);
LOGGER.info("Construido el objeto caballo de dicha clase con su bando correspondiente el cual puede ser blanco o negro.");
setImagen("caballo_blanco.png","caballo_negro.png");

}
/**
* Método que calcula la lista de posibles movimientos de la pieza, el caballo se mueve en forma de `L´, adelanta dos escaques
* horizontales o verticales, y despues un escaque perpendicular a los anteriores.
*
* @param posicion punto de partida.
* @param tablero situación del juego.
* @return movimientos posibles.
*/
public Set<Posicion> getDestinos(Posicion posicion, Tablero tablero) {

LOGGER.fine("Hemos llamado al método getDestinos de la clase Piezas y lo hemos reescrito ajustandonos a los criterios de la pieza caballo.");

Set<Posicion> destinos = new HashSet<Posicion>();
int c = posicion.getColumna();
int f = posicion.getFila();
desplaza(destinos, c, f, -1, 2, tablero);
desplaza(destinos, c, f, 1, 2, tablero);
desplaza(destinos, c, f, -1, -2, tablero);
desplaza(destinos, c, f, 1, -2, tablero);
desplaza(destinos, c, f, -2, 1, tablero);
desplaza(destinos, c, f, -2, -1, tablero);
desplaza(destinos, c, f, 2, 1, tablero);
desplaza(destinos, c, f, 2, -1, tablero);

LOGGER.finer("Metodo getDestinos() terminado(.....falta texto).");

return destinos;


}


/**
* Metodo que intenta ir desplazando la ficha por el tablero,
* hasta que se acaba el tablero o hay otra ficha,
* que come o respeta dependiendo de que sea del mismo bando
* o del bando contrario.
*
* @param destinos para ir apuntando los destinos posibles.
* @param c columna inicial.
* @param f fila inicial.
* @param dc desplazamiento en el eje X: columnas.
* @param df desplazamiento en el eje Y: filas.
* @param tablero tablero de juego para saber el entorno.
*/
private void desplaza(Set<Posicion> destinos, int c, int f, int dc, int df, Tablero tablero) {

for (int nc = c + dc, nf = f + df;
nc >= 0 && nc < 8 && nf >= 0 && nf < 8;
nc += dc, nf += df) {
if(prueba(destinos,nc,nf,tablero)){

break;
}
}



}
/**
* Metodo que prueba a colocarse en una cierta posición.
* Si puede, lo añade a destinos; si no, pasa.
*
* @param destinos para ir apuntando los destinos posibles.
* @param c columna a la que queremos movernos.
* @param f fila a la que queremos movernos.
* @param tablero tablero de juego para saber el entorno.
* @return TRUE si hemos llegado a un punto en que debemos parar,
* tanto si comemos una pieza del otro bando
* como si chocamos con otra pieza de nuestro bando.
* FALSE si no es posición final: podemos seguir moviéndonos.
*/
private boolean prueba(Set<Posicion> destinos, int c, int f, Tablero tablero) {
Posicion posicion = new Posicion(c, f);
Pieza pieza = tablero.getPieza(posicion);
if (pieza == null) {
destinos.add(posicion);
} else {
if (pieza.getBando() != getBando()) {
destinos.add(posicion);
}
return true;
}
return true;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder