s
unknown
java
a year ago
4.6 kB
2
Indexable
package juego; import piezas.*; public class Tablero { private final int filas = 8; private final int columnas = 8; private Piezas[][] tablero = new Piezas[filas][columnas]; private String[] arrayColumnas = { "A", "B", "C", "D", "E", "F", "G", "H" }; public void inicializarTablero() { tablero[0][0] = new Torre("n"); tablero[0][7] = new Torre("n"); // Torre negra tablero[7][0] = new Torre("b"); // Torre blanca tablero[7][7] = new Torre("b"); // Torre blanca // Reyes tablero[0][4] = new Rey("n"); // Rey negro tablero[7][4] = new Rey("b"); // Rey blanco // Peones for (int i = 0; i < columnas; i++) { tablero[1][i] = new Peon("n"); tablero[6][i] = new Peon("b"); } } public void mostrarTablero() { String[][] tablero = new String[filas][columnas]; for (int i = 0; i < 8; i++) { switch (i) { case 0: tablero[0][i] = "Tn"; tablero[7][i] = "Tb"; break; case 1: tablero[0][i] = "Cn"; tablero[7][i] = "Cb"; break; case 2: tablero[0][i] = "An"; tablero[7][i] = "Ab"; break; case 3: tablero[0][i] = "rn"; tablero[7][i] = "rb"; break; case 4: tablero[0][i] = "Rn"; tablero[7][i] = "Rb"; break; case 5: tablero[0][i] = "An"; tablero[7][i] = "Ab"; break; case 6: tablero[0][i] = "Cn"; tablero[7][i] = "Cb"; break; case 7: tablero[0][i] = "Tn"; tablero[7][i] = "Tb"; break; } } for (int j = 0; j < 8; j++) { tablero[1][j] = "Pn"; tablero[6][j] = "Pb"; } System.out.println(" A B C D E F G H"); for (int i = 0; i < filas; i++) { System.out.print(i + " | "); for (int j = 0; j < columnas; j++) { if (tablero[i][j] != null) { System.out.print(tablero[i][j] + " | "); } else { System.out.print(" | "); } } System.out.println(); } } public boolean realizarMovimiento(Jugador jugador, String nombrePieza, String origenX, int origenY, String destinoX, int destinoY) { int oriX = obtenerIndiceColumna(origenX); int destX = obtenerIndiceColumna(destinoX); // Verificar si las coordenadas están dentro del rango del tablero if (oriX == -1 || destX == -1 || origenY < 1 || origenY >= filas || destinoY < 1 || destinoY >= filas) { System.out.println("Coordenadas inválidas. Inténtalo de nuevo."); return false; } // Verificar si la pieza seleccionada pertenece al jugador actual if (!validarPiezaDeJugador(jugador, nombrePieza)) { System.out.println("La pieza no pertenece a " + jugador.getNombre() + ". Inténtalo de nuevo."); return false; } // Realizar el movimiento Piezas piezaOrigen = tablero[origenY][oriX]; Piezas piezaDestino = tablero[destinoY][destX]; System.out.println("Pieza de origen: " + piezaOrigen); System.out.println("Pieza de destino: " + piezaDestino); if (piezaOrigen != null && piezaOrigen.esMovimientoValido(oriX, origenY, destX, destinoY)) { // Verificar si la casilla de destino está vacía o si la pieza puede ser // capturada if (piezaDestino == null || !piezaDestino.getColor().equals(jugador.getColor())) { // Realizar el movimiento tablero[origenY][oriX] = null; tablero[destinoY][destX] = piezaOrigen; System.out.println("Movimiento realizado con éxito."); return true; } else { System.out.println("No puedes capturar tu propia pieza. Inténtalo de nuevo."); } } else { System.out.println("Movimiento inválido. Inténtalo de nuevo."); } return true; } public boolean validarPiezaDeJugador(Jugador jugador, String nombrePieza) { // Busca la pieza en el tablero y verifica si pertenece al jugador actual for (int i = 0; i < filas; i++) { for (int j = 0; j < columnas; j++) { Piezas pieza = tablero[i][j]; if (pieza != null && pieza.getNombre().equalsIgnoreCase(nombrePieza.substring(0, 1)) && pieza.getColor().equalsIgnoreCase(nombrePieza.substring(1))) { return true; } } } return false; } public int obtenerIndiceColumna(String origenX) { int indice = -1; for (int i = 0; i < arrayColumnas.length; i++) { if (arrayColumnas[i].equals(origenX.toUpperCase())) { indice = i; break; // Salir del bucle una vez que se ha encontrado la columna } } return indice; } // public static boolean movimientoValido () { // // if () { // // } // // // return false; // } }
Editor is loading...
Leave a Comment