package ajedrez.movimientos;
import ajedrez.Casilla;
import ajedrez.Tablero;
public class MovimientoTorreBlanca implements MovimientoFigura {
private Tablero tablero;
public MovimientoTorreBlanca(Tablero tablero){
this.tablero = tablero;
}
@Override
public boolean puedeLlegar (Casilla origen, Casilla destino){
if (origen.containsFiguraBlanca()){
if (destino.containsFiguraBlanca()){
return false;
} else{
return (movimientoHorizontal(origen, destino) || (movimientoVertical(origen, destino)));
}
} else {
return false;
}
}
public boolean movimientoVertical (Casilla origen, Casilla destino){
if (origen.getFila () == destino.getFila ()){
int recorrido = 0;
if (origen.getColumna() < destino.getColumna()){
recorrido = origen.getColumna() + 1;
}else{
recorrido = origen.getColumna() - 1;
}
while (recorrido != destino.getColumna()){
if (tablero.getCasilla (origen.getFila(), recorrido).vacía()){
if (origen.getColumna() < destino.getColumna()){
recorrido++;
}else{
recorrido--;
}
}else{
return false;
}
}
return true;
}else{
return false;
}
}
public boolean movimientoHorizontal (Casilla origen, Casilla destino){
if (origen.getColumna () == destino.getColumna ()){
int recorridoFila = 0;
if (origen.getFila() < destino.getFila()){
recorridoFila = origen.getFila() + 1;
}else{
recorridoFila = origen.getFila() - 1;
}
while (recorridoFila != destino.getFila()){
if (tablero.getCasilla (recorridoFila, origen.getColumna()).vacía()){
if (origen.getFila() < destino.getFila()){
recorridoFila++;
}else{
recorridoFila--;
}
}else{
return false;
}
}
return true;
}else{
return false;
}
}
}
Mi pregunta es si alguien me podria aconsejar como mejorar el codigo porque verdaderamente lo veo algo rollo este codigo...
Funciona a la perfeccion pero me interesaría que mirando el código y viendo las posibilidades que tengo saber si alguien lo haria mucho más sencillo o mas pequeño.
No creo que sea necesario decir lo que se puede utilizar ya que en el mismo codigo tengo lo necesario para saber si una casilla esta vacia,etc...