diff --git a/src/capitulo04/bloque08/Ejercicio05.java b/src/capitulo04/bloque08/Ejercicio05.java new file mode 100644 index 0000000..4e176a8 --- /dev/null +++ b/src/capitulo04/bloque08/Ejercicio05.java @@ -0,0 +1,61 @@ +package capitulo04.bloque08; + +import java.util.Scanner; + +public class Ejercicio05 { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int[] posicion = solicitarPosicion(scanner); + int fila = posicion[0]; + int columna = posicion[1]; + + System.out.println("Movimientos posibles:"); + + // Diagonal superior izquierda + for (int i = fila - 1, j = columna - 1; i >= 0 && j >= 0; i--, j--) { + System.out.println((char) ('a' + j) + "" + (8 - i)); + } + + // Diagonal superior derecha + for (int i = fila - 1, j = columna + 1; i >= 0 && j < 8; i--, j++) { + System.out.println((char) ('a' + j) + "" + (8 - i)); + } + + // Diagonal inferior izquierda + for (int i = fila + 1, j = columna - 1; i < 8 && j >= 0; i++, j--) { + System.out.println((char) ('a' + j) + "" + (8 - i)); + } + + // Diagonal inferior derecha + for (int i = fila + 1, j = columna + 1; i < 8 && j < 8; i++, j++) { + System.out.println((char) ('a' + j) + "" + (8 - i)); + } + } + + public static int[] solicitarPosicion(Scanner sc) { + int[] posicion = new int[2]; + while (true) { + System.out.print("Introduzca la posición del alfil (e4 por ejemplo): "); + String pos = sc.nextLine(); + if (pos.charAt(0) >= 'a' && pos.charAt(0) <= 'h') { + posicion[1] = pos.charAt(0) - 'a'; + } else { + System.out.println("No ha introducido una letra de columna correcta"); + } + + int num = (pos.charAt(1) - '0'); + + if (num >= 1 && num <= 8) { + posicion[0] = 8 - num; + } else { + System.out.println("No ha introducido un número de fila correcto."); + } + + if (posicion[0] >= 0 && posicion[0] < 8 && posicion[1] >= 0 && posicion[1] < 8) { + break; + } + } + return posicion; + } +}