s
unknown
java
2 years ago
4.6 kB
6
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