O código que fiz para a questão:
import os
tabela= [ [ " "," "," "],
[ " "," "," "],
[ " ", " "," "] ]
def mostrarVelha ():
global tabela
print()
for linha in range(3):
for coluna in range (3):
if tabela[linha][coluna] != "x" and tabela[linha][coluna] != "o":
tabela[linha][coluna] = " "
print (" 0 1 2 \n ")
for linha in range(3):
for coluna in range(3):
print("", tabela[linha][coluna], end = "")
if coluna < 2:
print(" |", end = "")
if coluna == 2:
print(" ", linha)
if linha < 2 :
print("")
print (" ------------")
print()
def jogar (simbolo,linha,coluna):
global tabela
mudou = False
if linha == 0:
for i in range(3):
if i == coluna:
if tabela[linha][coluna] != "x" and tabela[linha][coluna] != "o":
tabela[linha][coluna] = simbolo
mudou = True
if linha == 1:
for i in range(3):
if i == coluna:
if tabela[linha][coluna] != "x" and tabela[linha][coluna] != "o":
tabela[linha][coluna] = simbolo
mudou = True
if linha == 2:
for i in range(3):
if i == coluna:
if tabela[linha][coluna] != "x" and tabela[linha][coluna] != "o":
tabela[linha][coluna] = simbolo
mudou = True
return mudou
def trocarJogador ():
global simbolo
global jogador
if simbolo == "x":
simbolo = "o"
else:
simbolo = "x"
if jogador == 1:
jogador = 2
else:
jogador = 1
def jogoTerminou ():
global jogador
global tabela
espacosDisponiveis = 0
terminou = False
#Linhas
for linha in range(3):
if tabela[linha][0] == tabela[linha][1] == tabela[linha][2] == "o":
terminou = True
if tabela[linha][0] == tabela[linha][1] == tabela[linha][2] == "x":
terminou = True
#colunas
for coluna in range(3):
if tabela[0][coluna] == tabela[1][coluna] == tabela[2][coluna] == "o":
terminou = True
if tabela[0][coluna] == tabela[1][coluna] == tabela[2][coluna] == "x":
terminou = True
#Diagonal
if tabela[0][0] == "o" and tabela[1][1]=="o" and tabela[2][2] == "o" or tabela[0][2] == "o" and tabela[1][1]== "o" and tabela[2][0] =="o":
terminou = True
if tabela[0][0] == "x" and tabela[1][1]=="x" and tabela[2][2] == "x" or tabela[0][2] == "x" and tabela[1][1]== "x" and tabela[2][0] =="x":
terminou = True
# Empate
for linha in range(3):
for coluna in range(3):
if tabela[linha][coluna] != "x" and tabela[linha][coluna]!= "o":
espacosDisponiveis = espacosDisponiveis+1
if espacosDisponiveis == 0:
terminou = True
print("\n"*2)
print("Empate")
jogador = 0
return terminou
def reiniciarVelha():
global tabela
global simboloInicial
global simbolo
global jogador
jogador = 1
for linha in range(3):
for coluna in range (3):
tabela[linha][coluna] = ""
mostrarVelha ()
if simboloInicial == "x":
simbolo = "o"
simboloInicial = simbolo
else:
if simboloInicial == "o":
simbolo = "x"
simboloInicial = simbolo
jogador = 1
simbolo = "x"
simboloInicial = simbolo
# A variável simboloInicial armazena uma cópia de "x" que começa o jogo.
# Ela vai ser trocada por "o" dentro da função reiniciarVelha, caso o usuário decida continuar jogando
#, após terminar uma partida. E assim por diante.
resposta = True
resultado = False
mostrarVelha()
while resposta:
while not jogoTerminou():
resultado = False
while not resultado:
try :
print("\n")
print("Jogador",jogador,": informe a linha que gostaria de jogar", simbolo)
linha = int(input())
print("Jogador",jogador,": informe a coluna que gostaria de jogar", simbolo)
coluna = int(input())
os.system('cls' if os.name == 'nt' else 'clear')
resultado = jogar(simbolo, linha,coluna)
if not resultado:
print("Jogada inválida")
mostrarVelha()
except ValueError :
os.system('cls' if os.name == 'nt' else 'clear')
print(" Digite um número válido ")
mostrarVelha()
trocarJogador()
print ("\n"*1)
print("Jogo finalizado")
if jogador >= 1 and jogador <= 2:
if jogador == 2 :
jogador= jogador-1
print("jogador", jogador, "ganhou")
else:
jogador = jogador+1
print("jogador", jogador, "ganhou")
pergunta = ""
while pergunta !="N" and pergunta !="S":
print("Gostaria de continuar jogando?[S/N]")
pergunta = str(input("")).upper().strip()[0]
if pergunta == "N":
resposta = False
elif pergunta == "S":
os.system('cls' if os.name == 'nt' else 'clear')
reiniciarVelha()
else:
print ("Digite [S],ou [N]")