Skip to content

Instantly share code, notes, and snippets.

@MrDave1999
Created November 9, 2019 22:48
Show Gist options
  • Save MrDave1999/9afb8a4cc15538e1996e32eaf3d6713c to your computer and use it in GitHub Desktop.
Save MrDave1999/9afb8a4cc15538e1996e32eaf3d6713c to your computer and use it in GitHub Desktop.
Programa que muestra los posibles movimientos que puede tener un caballo en la tabla de ajedrez.
import java.util.*;
class Menu
{
public static boolean ShowMenu()
{
int op;
Scanner sc = new Scanner(System.in);
Piece piece = new Piece();
while(true)
{
System.out.println("Menu: ");
System.out.println("1. Iteratividad");
System.out.println("2. Recursividad");
System.out.println("3. Salir");
op = sc.nextInt();
if(!(op > 0 && op < 4))
{
System.out.println("Error: Opciones validas: <1-3>");
continue;
}
if(op != 3)
DataEntry(sc, piece);
switch(op)
{
case 1:
piece.PrintMovHorse();
break;
case 2:
piece.PrintMovHorse(0);
break;
case 3:
sc.close();
return true;
default:
break;
}
}
}
private static void DataEntry(Scanner sc, Piece piece)
{
while(true)
{
System.out.println("Ingrese la posicion X: ");
try
{
if(!piece.setPosX(sc.nextInt()))
break;
}
catch(InputMismatchException e)
{
System.out.println("Error: No es un numero.");
}
//Para limpiar el búfer
sc.nextLine();
}
while(true)
{
System.out.println("Ingrese la posicion Y: ");
try
{
if(!piece.setPosY(sc.nextInt()))
break;
}
catch(InputMismatchException e)
{
System.out.println("Error: No es un numero.");
}
//Para limpiar el búfer
sc.nextLine();
}
}
}
class Piece
{
//Coordenada del posible movimiento de una pieza
private int movX;
private int movY;
//Coordenada actual donde estará una pieza
private int posX;
private int posY;
private String msgError = "La posicion debe estar en el rango del 1 al 8";
public boolean setPosX(int posX)
{
if(!(posX >= 1 && posX <= 8))
{
System.out.println(msgError);
return true;
}
this.posX = posX;
return false;
}
public boolean setPosY(int posY)
{
if(!(posY >= 1 && posY <= 8))
{
System.out.println(msgError);
return true;
}
this.posY = posY;
return false;
}
private boolean Valid(int i)
{
switch(i)
{
case 0:
movX = posX - 1;
movY = posY - 2;
break;
case 1:
movX = posX + 1;
movY = posY - 2;
break;
case 2:
movX = posX + 2;
movY = posY - 1;
break;
case 3:
movX = posX + 2;
movY = posY + 1;
break;
case 4:
movX = posX + 1;
movY = posY + 2;
break;
case 5:
movX = posX - 1;
movY = posY + 2;
break;
case 6:
movX = posX - 2;
movY = posY + 1;
break;
case 7:
movX = posX - 2;
movY = posY - 1;
break;
default: break;
}
return ((movX > 0 && movX < 9) && (movY > 0 && movY < 9) ? false : true);
}
//Imprime los posibles movimiento del caballo (usando función iterativa)
public void PrintMovHorse()
{
for(int i = 0; i != 8; ++i)
{
if(!Valid(i))
System.out.println("(" + "" + movX + "," + movY + ")");
}
}
//Imprime los posibles movimiento del caballo (usando función recursiva)
public void PrintMovHorse(int i)
{
if(i != 8)
{
if(!Valid(i))
System.out.println("(" + "" + movX + "," + movY + ")");
PrintMovHorse(++i);
}
}
}
class Program
{
public static void main(String[] args)
{
Menu.ShowMenu();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment