Este es un sencillo juego de Batalla Naval implementado en Java, ejecutado en la consola. El objetivo es hundir todos los barcos del oponente (en este caso, barcos colocados aleatoriamente en un tablero).
El juego se desarrolla en un tablero de 10x10. Se despliegan varios tipos de barcos:
- Portaaviones (tamaño 4)
- Submarino (tamaño 3)
- Patrulla (tamaño 2)
- Lancha (tamaño 1)
Los jugadores introducen coordenadas (X, Y) para disparar a los barcos. El juego informa si el disparo fue "Agua", "Tocado" o si un barco ha sido "Hundido". El juego termina cuando todos los barcos han sido hundidos.
El proyecto utiliza una estructura de directorios estándar de Java. Para compilar el juego:
-
Asegúrate de tener un JDK (Java Development Kit) instalado.
-
Navega a la raíz del repositorio en tu terminal.
-
Crea un directorio para los archivos compilados (por ejemplo,
out):mkdir -p out/production/batallaNaval
-
Compila los archivos Java:
find src -name "*.java" > sources.txt javac -d out/production/batallaNaval @sources.txt
O, si prefieres compilar manualmente cada paquete (aunque
findes más robusto):# Ejemplo (ajusta según sea necesario si la estructura de paquetes cambia) # javac -d out/production/batallaNaval src/clases/coordenada/*.java src/clases/interfazbarcos/*.java src/clases/barco/*.java src/clases/campobatalla/*.java src/Main.java
Una vez compilado, puedes ejecutar el juego desde la raíz del proyecto:
java -cp out/production/batallaNaval MainEl juego te pedirá que introduzcas las coordenadas X e Y para cada disparo.
- Superposición de Barcos: Actualmente, existe la posibilidad de que los barcos se superpongan al ser generados aleatoriamente en el tablero. Esta es una limitación conocida del estado actual del juego y no fue abordada en la refactorización reciente, ya que requeriría implementar una lógica de validación de posiciones más compleja.
¡Las contribuciones son bienvenidas! Si deseas mejorar el juego, por favor considera hacer un fork del repositorio y enviar un Pull Request. Algunas áreas de mejora podrían ser:
- Implementar una interfaz gráfica.
- Añadir un modo de dos jugadores.
- Solucionar el problema de superposición de barcos.
- Añadir tests unitarios.