Created
November 10, 2019 03:07
-
-
Save Guiller1999/e17f57fe5b8f6bbf7c6545077db828d9 to your computer and use it in GitHub Desktop.
Programa que imprime los posibles movimientos que puede realizar la pieza de ajedrez caballo.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
// Programa que imprime las posiciones en las que se puede mover la pieza de ajedrez Caballo dentro de un tablero de 8x8 | |
public class Ejecutable{ | |
public static void main(String args[]){ | |
int posX = 0, posY = 0, contMov = 0; | |
boolean flag; | |
PiezaCaballo caballo; // Referencia a un objeto de PiezaCaballo | |
BufferedReader br; // Referencia a un objeto de BufferedReader | |
System.out.println("\n\t\t\t INGRESO DE DATOS \n"); | |
try{ | |
// Este bucle permite que la posicion inicial del caballo sea correcta. | |
// Condiciones: PosicionX y PosicionY no debe ser menor a 1 | |
// PosicionX y PosicionY no debe ser mayor a 8 | |
do{ | |
br = new BufferedReader(new InputStreamReader(System.in)); | |
System.out.println("=> Ingrese la posicion de la pieza "); | |
System.out.println("----------------------------------------------\n"); | |
// Ingreso de la posicion X Inicial | |
System.out.print("- Ingrese la coordenada X: "); | |
posX = Integer.parseInt(br.readLine()); | |
// Ingreso de la posicion Y Inicial | |
System.out.print("- Ingrese la coordenada Y: "); | |
posY = Integer.parseInt(br.readLine()); | |
System.out.println("----------------------------------------------\n"); | |
caballo = new PiezaCaballo(posX, posY); // Se crea un objeto de tipo PiezaCaballo | |
if(caballo.validarPosicion(posX, posY) != true){ | |
System.out.println("\n\t\t *** ERROR. POSICION NO VALIDA *** \n"); | |
} | |
}while(caballo.validarPosicion(posX, posY) != true); | |
// Fin del bucle | |
// Mediante este bucle imprimimos todos los movimientos que puede realizar el caballo | |
for(int i = 1; i <= 8; i++){ | |
flag = caballo.ejecutarMovimientos(i); // Se guarda true si el movimiento N.i se realizó correctamente, caso | |
// contrario guarda false | |
// Si el movimiento se realizó correctamente se procede a llamar a la funcion encargada de imprimir la posicion | |
// a la cual se puede mover el caballo | |
if(flag){ | |
contMov++; // Se incrementa el numero de movimientos que puede realizar el caballo | |
System.out.println(">> Movimiento #" + contMov + ": (" + caballo.getDesplX() + ", " + caballo.getDesplY() + ")"); // Imprime el desplazamiento del caballo | |
} | |
} | |
// Fin del bucle | |
} | |
catch(Exception e){ | |
System.out.println("Error: " + e); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class PiezaCaballo{ | |
private int posX_Inicial; | |
private int posY_Inicial; | |
private int desplX; | |
private int desplY; | |
public PiezaCaballo(int posX, int posY){ | |
this.posX_Inicial = posX; // Se guarda la posicion X inicial del caballo | |
this.posY_Inicial = posY; // Se guarda la posicion Y inicial del caballo | |
} | |
// Metodos que representan los posibles movimientos del caballo | |
public void movimiento_1(){ | |
// Realizamos las operaciones necesarias para calcular el punto al cual se va a desplazar la ficha | |
// Y guardamos las coordenadas del desplazamiento | |
desplX = posX_Inicial - 1; | |
desplY = posY_Inicial - 2; | |
} | |
public void movimiento_2(){ | |
desplX = posX_Inicial + 1; | |
desplY = posY_Inicial - 2; | |
} | |
public void movimiento_3(){ | |
desplX = posX_Inicial + 2; | |
desplY = posY_Inicial - 1; | |
} | |
public void movimiento_4(){ | |
desplX = posX_Inicial + 2; | |
desplY = posY_Inicial + 1; | |
} | |
public void movimiento_5(){ | |
desplX = posX_Inicial + 1; | |
desplY = posY_Inicial + 2; | |
} | |
public void movimiento_6(){ | |
desplX = posX_Inicial - 1; | |
desplY = posY_Inicial + 2; | |
} | |
public void movimiento_7(){ | |
desplX = posX_Inicial - 2; | |
desplY = posY_Inicial + 1; | |
} | |
public void movimiento_8(){ | |
desplX = posX_Inicial - 2; | |
desplY = posY_Inicial - 1; | |
} | |
// Este metodo evalua si se puede desplazar la pieza en las coordenadas dadas | |
// Condicines de evaluacion: | |
// -> posX y posY no deben ser menor a 1 | |
// -> posX y posY no deben ser mayor a 8 | |
public boolean validarPosicion(int posX, int posY){ | |
if(((posX < posX) || (posX > 8)) || ((posY < 1) || (posY > 8))){ | |
return false; | |
} | |
else{ | |
return true; | |
} | |
} | |
// Este metodo se encarga de ejecutar uno de los movimientos posibles que puede realizar el caballo | |
// El parametro i es el número de movimiento a realizar | |
public boolean ejecutarMovimientos(int i){ | |
boolean flag = false; // Se encarga de guardar true si el movimiento se realizó correctamente y false si el | |
// movimiento no se puede realizar | |
switch(i){ | |
case 1: | |
movimiento_1(); | |
break; | |
case 2: | |
movimiento_2(); | |
break; | |
case 3: | |
movimiento_3(); | |
break; | |
case 4: | |
movimiento_4(); | |
break; | |
case 5: | |
movimiento_5(); | |
break; | |
case 6: | |
movimiento_6(); | |
break; | |
case 7: | |
movimiento_7(); | |
break; | |
case 8: | |
movimiento_8(); | |
break; | |
} | |
// Nos aseguramos que se pueda realizar el movimiento | |
flag = validarPosicion(desplX, desplY); // Llamamos a esta funcion y retorna true si el movimiento es valido y | |
// false si el movimiento es invalido | |
return flag; | |
} | |
// Obtenemos el desplazamiento en X | |
public int getDesplX(){ | |
return desplX; | |
} | |
// Obtenemos el desplazamiento en X | |
public int getDesplY(){ | |
return desplY; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment