s

mail@pastecode.io avatar
unknown
java
2 months ago
4.6 kB
2
Indexable
Never
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;

//	}

}
Leave a Comment