Skip to content

Instantly share code, notes, and snippets.

@Guiller1999
Created November 10, 2019 03:07
Show Gist options
  • Save Guiller1999/e17f57fe5b8f6bbf7c6545077db828d9 to your computer and use it in GitHub Desktop.
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.
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);
}
}
}
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