Implementación de un juego de Batalla Naval en Python

| Última modificación: 15 de marzo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el emocionante mundo de la programación, donde la creatividad y la lógica se fusionan, uno puede encontrarse con desafíos fascinantes. En este post te mostraremos cómo llevar a cabo la implementación de un juego de Batalla Naval en Python. Este juego clásico es una excelente manera de mejorar tus habilidades de programación mientras te diviertes. ¿Estás listo para sumergirte en la emocionante batalla naval de la programación?

¿Qué es el juego de Batalla Naval?

La Batalla Naval es un juego de estrategia en el que dos jugadores compiten para hundir los barcos del oponente en un tablero cuadriculado. Cada jugador tiene un conjunto de barcos de diferentes tamaños y el objetivo es adivinar la ubicación de los barcos enemigos y hundirlos. El jugador que hunde todos los barcos del oponente gana la partida.

juego de batalla naval en Python

Configurando el entorno

Antes de sumergirse en la implementación del juego de Batalla Naval en Python, asegúrese de tener Python instalado en su sistema. Puede descargar Python desde el sitio web oficial de Python si aún no lo tiene instalado. Una vez que tenga Python en funcionamiento, está listo para comenzar.

Creando el tablero de Batalla Naval

Lo primero que debemos hacer es crear el tablero del juego de Batalla Naval en Python. Este tablero será una cuadrícula en la que los jugadores colocarán sus barcos y realizarán sus disparos. Para simplificar, usaremos una cuadrícula de 10×10 en nuestro ejemplo. A continuación, se muestra un código básico para crear el tablero:

def crear_tablero(): 
tablero = [] 
for _ in range(10): 
fila = ["O"] * 10 # Usamos "O" para representar el agua 
tablero.append(fila) 
return tablero

Colocando los barcos

Ahora que tenemos un tablero, es hora de colocar los barcos. En este punto, es importante recordar que los barcos deben colocarse de manera aleatoria y que ciertos campos son obligatorios para evitar trampas. Aquí hay un ejemplo de cómo podríamos colocar los barcos en el tablero:

import random 
def colocar_barcos(tablero): 
barcos = { 
"Portaaviones": 5, 
"Acorazado": 4, 
"Destructor": 3, 
"Submarino": 3, 
"Barco Patrulla": 2 
} 
for nombre, longitud in barcos.items(): 
while True: 
fila = random.randint(0, 9) 
columna = random.randint(0, 9) 
orientacion = random.choice(["horizontal", "vertical"]) 
if orientacion == "horizontal": 
if columna + longitud <= 10: 
valido = True 
for i in range(longitud): 
if tablero[fila][columna + i] != "O": 
valido = False 
break 
else: 
valido = False 
else: if fila + longitud <= 10: 
valido = True 
for i in range(longitud): 
if tablero[fila + i][columna] != "O": 
valido = False 
break 
else: valido = False 
if valido: for i in range(longitud): 
if orientacion == "horizontal": 
tablero[fila][columna + i] = nombre[0] 
else: 
tablero[fila + i][columna] = nombre[0] 
break

El juego de Batalla Naval en Python en acción

Una vez que hemos colocado los barcos, podemos comenzar a jugar. Cada jugador tomará turnos para adivinar la ubicación de los barcos enemigos y disparar. Aquí hay un fragmento de código para manejar el turno de un jugador:

def turno_jugador(tablero, tablero_enemigo): 
while True: 
try: 
fila = int(input("Ingrese la fila para disparar (0-9): ")) 
columna = int(input("Ingrese la columna para disparar (0-9): ")) 
if 0 <= fila < 10 and 0 <= columna < 10: 
if tablero_enemigo[fila][columna] == "X" or tablero_enemigo[fila][columna] == "M": 
print("Ya has disparado aquí. Intenta de nuevo.") 
else: 
if tablero[fila][columna] != "O": 
print("¡Impacto!") 
tablero_enemigo[fila][columna] = "X" 
else: 
print("Agua") 
tablero_enemigo[fila][columna] = "M" 
break 
else: 
print("Coordenadas fuera de rango. Ingresa nuevamente.") 
except ValueError: 
print("Entrada no válida. Ingresa nuevamente.")

¿Quién gana la partida?

El juego continúa con los jugadores alternando turnos hasta que uno de ellos hunde todos los barcos del oponente. En ese momento, se declara al jugador ganador. Aquí hay un fragmento de código para verificar si un jugador ha ganado:

def verificar_ganador(tablero): 
for fila in tablero: 
if "O" in fila: 
return False 
return True

Cierre de la partida

Una vez que hayas implementado el juego de Batalla Naval en Python, puedes disfrutar de horas de diversión jugando contra un amigo o incluso crear una versión contra la inteligencia artificial. La programación es una herramienta poderosa que te permite crear tus propios juegos y aplicaciones, y este proyecto es solo el comienzo.

Continúa aprendiendo

En KeepCoding, creemos en el poder de la programación para cambiar vidas. Aprender a programar te abre las puertas a una industria en constante crecimiento con una alta demanda de profesionales. Al finalizar nuestro Desarrollo Web Full Stack Bootcamp, estarás preparado para una carrera emocionante y lucrativa en tecnología.

No esperes más para comenzar tu viaje en el mundo del desarrollo web. Únete a nuestro bootcamp y descubre cómo puedes convertirte en un desarrollador en poco tiempo. No solo aprenderás a crear el juego de Batalla Naval en Python, sino que también adquirirás habilidades que te llevarán a un futuro prometedor en la industria tecnológica. ¡Anímate a pedir información y a cambiar tu vida!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado