import random
def inicializaTabuleiro(tabuleiro):
for linha in range(5):
for coluna in range(5):
tabuleiro[linha][coluna] = -1
def mostraTabuleiro(tabuleiro):
print("\t1 \t2 \t3 \t4 \t5")
print()
for linha in range(5):
print(linha+1, end="")
for coluna in range(5):
if tabuleiro[linha][coluna] == -1:
print("\t~", end="")
elif tabuleiro[linha][coluna] == 0:
print("\t*", end="")
elif tabuleiro[linha][coluna] == 1:
print("\tX", end="")
print()
def iniciaNavios(navios):
[Link]()
for navio in range(3):
navios[navio][0] = [Link](0, 4)
navios[navio][1] = [Link](0, 4)
for anterior in range(navio):
if (
navios[navio][0] == navios[anterior][0] and
navios[navio][1] == navios[anterior][1]
):
while (
navios[navio][0] == navios[anterior][0] and
navios[navio][1] == navios[anterior][1]
):
navios[navio][0] = [Link](0, 4)
navios[navio][1] = [Link](0, 4)
def darTiro(tiro):
tiro[0] = int(input("Linha: ")) - 1
tiro[1] = int(input("Coluna: ")) - 1
def acertou(tiro, navios):
for navio in range(3):
if tiro[0] == navios[navio][0] and tiro[1] == navios[navio][1]:
print("Você acertou o tiro ({},{})".format(tiro[0]+1, tiro[1]+1))
return True
return False
def dica(tiro, navios, tentativa):
linha = 0
coluna = 0
for fila in range(3):
if navios[fila][0] == tiro[0]:
linha += 1
if navios[fila][1] == tiro[1]:
coluna += 1
print("\nDica {}: \nlinha {} -> {} navios\ncoluna {} -> {} navios".format(
tentativa, tiro[0]+1, linha, tiro[1]+1, coluna
))
def alteraTabuleiro(tiro, navios, tabuleiro):
if acertou(tiro, navios):
tabuleiro[tiro[0]][tiro[1]] = 1
else:
tabuleiro[tiro[0]][tiro[1]] = 0
tabuleiro = [[0]*5 for _ in range(5)]
navios = [[0]*2 for _ in range(3)]
tiro = [0, 0]
tentativas = 0
acertos = 0
inicializaTabuleiro(tabuleiro)
iniciaNavios(navios)
print()
while acertos != 3:
mostraTabuleiro(tabuleiro)
darTiro(tiro)
tentativas += 1
if acertou(tiro, navios):
dica(tiro, navios, tentativas)
acertos += 1
else:
dica(tiro, navios, tentativas)
alteraTabuleiro(tiro, navios, tabuleiro)
print("\n\n\nJogo terminado. Você acertou os 3 navios em {}
tentativas".format(tentativas))
mostraTabuleiro(tabuleiro)