Juego Batalla Naval (Matrices) BARRIOS CLAUDON JAQUELINE

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 15

Instituto Y Unidad Académica:

Instituto Tecnológico Superior De Alvarado, Medellín De


Bravo
Materia Y Docente: Estructura de DATA
Dionisio Pérez Pérez
Nombre: Barrios Claudon Jaqueline
Carrera: Ingeniería En Sistemas Computacionales
Turno, Semestre Y Unidad:
Matutino, 3° Semestre, 1° Unidad
Tema:
Juego Batalla Naval (Matrices)
OBCERVACIÒN:
EL juego consiste en una matriz de NxN donde cada
usuario coloca "barcos", el objetivo es derribar los barcos
del jugador contrario.
CODIGO
Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep 5 2022, 14:08:36) [MSC v.1933 64 bit
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import random
>>>
>>> FILAS = 4
>>> COLUMNAS = 4
>>> MAR = " "
>>> SUBMARINO = "S"
>>> DESTRUCTOR = "D"
>>> DESTRUCTOR_VERTICAL = "A"
>>> DISPARO_FALLADO = "-"
>>> DISPARO_ACERTADO = "*"
>>> DISPAROS_INICIALES = 10
>>> CANTIDAD_BARCOS_INICIALES = 6
>>> JUGADOR_1 = "J1"
>>> JUGADOR_2 = "J2"
>>>
>>>
>>> def obtener_matriz_inicial():
... matriz = []
... for y in range(FILAS):
... matriz.append([])
... for x in range(COLUMNAS):
... matriz[y].append(MAR)
... return matriz
...
>>> def incrementar_letra(letra):
... return chr(ord(letra)+1)
...
>>> def imprimir_separador_horizontal():
... for _ in range(COLUMNAS+1):
... print("+---", end="")
... print("+")
...
>>> def imprimir_fila_de_numeros():
... print("| ", end="")
... for x in range(COLUMNAS):
... print(f"| {x+1} ", end="")
... print("|")
...
>>> def es_mar(x, y, matriz):
... return matriz[y][x] == MAR
...
>>> def coordenada_en_rango(x, y):
... return x >= 0 and x <= COLUMNAS-1 and y >= 0 and y <= FILAS-1
...
>>> def colocar_e_imprimir_barcos(matriz, cantidad_barcos, jugador):
... barcos_una_celda = cantidad_barcos//2
... barcos_dos_celdas_verticales = cantidad_barcos//4
... barcos_dos_celdas_horizontales = cantidad_barcos//4
... if jugador == JUGADOR_1:
... print("Imprimiendo barcos del jugador 1 ")
... else:
... print("Imprimiendo barcos del jugador 2 ")
... print(f"Barcos de una celda: {barcos_una_celda}\nBarcos verticales de dos
celdas: {barcos_dos_celdas_verticales}\nBarcos horizontales de dos celdas:
{barcos_dos_celdas_horizontales}\nTotal:
{barcos_una_celda+barcos_dos_celdas_verticales+barcos_dos_celdas_horizontal
es}")
... matriz = colocar_barcos_de_dos_celdas_horizontal(
... barcos_dos_celdas_horizontales, DESTRUCTOR, matriz)
... matriz = colocar_barcos_de_dos_celdas_vertical(
... barcos_dos_celdas_verticales, DESTRUCTOR_VERTICAL, matriz)
... matriz = colocar_barcos_de_una_celda(barcos_una_celda, SUBMARINO,
matriz)
... return matriz
...
>>> def obtener_x_aleatoria():
... return random.randint(0, COLUMNAS-1)
...
>>> def obtener_y_aleatoria():
... return random.randint(0, FILAS-1)
...
>>> def colocar_barcos_de_una_celda(cantidad, tipo_barco, matriz):
... barcos_colocados = 0
... while True:
... x = obtener_x_aleatoria()
... y = obtener_y_aleatoria()
... if es_mar(x, y, matriz):
... matriz[y][x] = tipo_barco
... barcos_colocados += 1
... if barcos_colocados >= cantidad:
... break
... return matriz
...
>>> def colocar_barcos_de_dos_celdas_horizontal(cantidad, tipo_barco, matriz):
... barcos_colocados = 0
... while True:
... x = obtener_x_aleatoria()
... y = obtener_y_aleatoria()
... x2 = x+1
... if coordenada_en_rango(x, y) and coordenada_en_rango(x2, y) and
es_mar(x, y, matriz) and es_mar(x2, y, matriz):
... matriz[y][x] = tipo_barco
... matriz[y][x2] = tipo_barco
... barcos_colocados += 1
... if barcos_colocados >= cantidad:
... break
... return matriz
...
>>> def colocar_barcos_de_dos_celdas_vertical(cantidad, tipo_barco, matriz):
... barcos_colocados = 0
... while True:
... x = obtener_x_aleatoria()
... y = obtener_y_aleatoria()
... y2 = y+1
... if coordenada_en_rango(x, y) and coordenada_en_rango(x, y2) and
es_mar(x, y, matriz) and es_mar(x, y2, matriz):
... matriz[y][x] = tipo_barco
... matriz[y2][x] = tipo_barco
... barcos_colocados += 1
... if barcos_colocados >= cantidad:
... break
... return matriz
...
>>> def imprimir_disparos_restantes(disparos_restantes, jugador):
... print(f"Disparos restantes de {jugador}: {disparos_restantes}")
...
>>> def imprimir_matriz(matriz, deberia_mostrar_barcos, jugador):
... print(f"Este es el mar del jugador {jugador}: ")
... letra = "A"
... for y in range(FILAS):
... imprimir_separador_horizontal()
... print(f"| {letra} ", end="")
... for x in range(COLUMNAS):
... celda = matriz[y][x]
... valor_real = celda
... if not deberia_mostrar_barcos and valor_real != MAR and valor_real !=
DISPARO_FALLADO and valor_real != DISPARO_ACERTADO:
... valor_real = " "
... print(f"| {valor_real} ", end="")
... letra = incrementar_letra(letra)
... print("|",)
... imprimir_separador_horizontal()
... imprimir_fila_de_numeros()
... imprimir_separador_horizontal()
...
>>> def solicitar_coordenadas(jugador):
... print(f"Solicitando coordenadas de disparo al jugador {jugador}")
... y = None
... x = None
... while True:
... letra_fila = input(
... "Ingresa la letra de la fila tal y como aparece en el tablero: ")
... if len(letra_fila) != 1:
... print("Debes ingresar únicamente una letra")
... continue
... y = ord(letra_fila) - 65
... if coordenada_en_rango(0, y):
... break
... else:
... print("Fila inválida")
... while True:
... try:
... x = int(input("Ingresa el número de columna: "))
... if coordenada_en_rango(x-1, 0):
... x = x-1
... break
... else:
... print("Columna inválida")
... except:
... print("Ingresa un número válido")
... return x, y
...
>>> def disparar(x, y, matriz) -> bool:
... if es_mar(x, y, matriz):
... matriz[y][x] = DISPARO_FALLADO
... return False
... elif matriz[y][x] == DISPARO_FALLADO or matriz[y][x] ==
DISPARO_ACERTADO:
... return False
... else:
... matriz[y][x] = DISPARO_ACERTADO
... return True
...
>>> def oponente_de_jugador(jugador):
... if jugador == JUGADOR_1:
... return JUGADOR_2
... else:
... return JUGADOR_1
...
>>> def todos_los_barcos_hundidos(matriz):
... for y in range(FILAS):
... for x in range(COLUMNAS):
... celda = matriz[y][x]
... if celda != MAR and celda != DISPARO_ACERTADO and celda !=
DISPARO_FALLADO:
... return False
... return True
...
>>> def indicar_victoria(jugador):
... print(f"Fin del juego\nEl jugador {jugador} es el ganador")
...
>>> def indicar_fracaso(jugador):
... print(
... f"Fin del juego\nEl jugador {jugador} pierde. Se han acabado sus disparos")
...
>>> def imprimir_matrices_con_barcos(matriz_j1, matriz_j2):
... print("Mostrando ubicación de los barcos de ambos jugadores:")
... imprimir_matriz(matriz_j1, True, JUGADOR_1)
... imprimir_matriz(matriz_j2, True, JUGADOR_2)
...
>>> def jugar():
... disparos_restantes_j1 = DISPAROS_INICIALES
... disparos_restantes_j2 = DISPAROS_INICIALES
... cantidad_barcos = 5
... matriz_j1, matriz_j2 = obtener_matriz_inicial(), obtener_matriz_inicial()
... matriz_j1 = colocar_e_imprimir_barcos(
... matriz_j1, cantidad_barcos, JUGADOR_1)
... matriz_j2 = colocar_e_imprimir_barcos(
... matriz_j2, cantidad_barcos, JUGADOR_2)
... turno_actual = JUGADOR_1
... print("===============")
... while True:
... print(f"Turno de {turno_actual}")
... disparos_restantes = disparos_restantes_j2
... if turno_actual == JUGADOR_1:
... disparos_restantes = disparos_restantes_j1
... imprimir_disparos_restantes(disparos_restantes, turno_actual)
... matriz_oponente = matriz_j1
... if turno_actual == JUGADOR_1:
... matriz_oponente = matriz_j2
... imprimir_matriz(matriz_oponente, True,
... oponente_de_jugador(turno_actual))
... x, y = solicitar_coordenadas(turno_actual)
... acertado = disparar(x, y, matriz_oponente)
... if turno_actual == JUGADOR_1:
... disparos_restantes_j1 -= 1
... else:
... disparos_restantes_j2 -= 1
...
>>> imprimir_matriz(matriz_oponente, True,
File "<stdin>", line 1
imprimir_matriz(matriz_oponente, True,
IndentationError: unexpected indent
>>> oponente_de_jugador(turno_actual))
File "<stdin>", line 1
oponente_de_jugador(turno_actual))
IndentationError: unexpected indent
>>> if acertado:
File "<stdin>", line 1
if acertado:
IndentationError: unexpected indent
>>> print("Disparo acertado")
File "<stdin>", line 1
print("Disparo acertado")
IndentationError: unexpected indent
>>> if todos_los_barcos_hundidos(matriz_oponente):
File "<stdin>", line 1
if todos_los_barcos_hundidos(matriz_oponente):
IndentationError: unexpected indent
>>> indicar_victoria(turno_actual)
File "<stdin>", line 1
indicar_victoria(turno_actual)
IndentationError: unexpected indent
>>> imprimir_matrices_con_barcos(matriz_j1, matriz_j2)
File "<stdin>", line 1
imprimir_matrices_con_barcos(matriz_j1, matriz_j2)
IndentationError: unexpected indent
>>> break
File "<stdin>", line 1
break
IndentationError: unexpected indent
>>> else:
File "<stdin>", line 1
else:
IndentationError: unexpected indent
>>> print("Disparo fallado")
File "<stdin>", line 1
print("Disparo fallado")
IndentationError: unexpected indent
>>> if disparos_restantes-1 <= 0:
File "<stdin>", line 1
if disparos_restantes-1 <= 0:
IndentationError: unexpected indent
>>> indicar_fracaso(turno_actual)
File "<stdin>", line 1
indicar_fracaso(turno_actual)
IndentationError: unexpected indent
>>> imprimir_matrices_con_barcos(matriz_j1, matriz_j2)
File "<stdin>", line 1
imprimir_matrices_con_barcos(matriz_j1, matriz_j2)
IndentationError: unexpected indent
>>> break
File "<stdin>", line 1
break
IndentationError: unexpected indent
>>> turno_actual = oponente_de_jugador(turno_actual)
File "<stdin>", line 1
turno_actual = oponente_de_jugador(turno_actual)
IndentationError: unexpected indent
>>>
>>> def acerca_de():
... print("El programa creara barcos aleatorios para cada jugador, el ganador
será"
... " aquel que derribe todos los barcos del rival, y el perdedor será aquel que le
derriben todos sus barcos o que se quede primero sin disparos.")
...
>>>
>>> def mostrar_menu():
... eleccion = ""
... while eleccion != "3":
... menu = """
RESULTADO

También podría gustarte