Skip to content

Instantly share code, notes, and snippets.

@wdsrocha
Created June 2, 2017 17:21
Show Gist options
  • Save wdsrocha/499540e7fa65ea3ac9bdf63867bc5995 to your computer and use it in GitHub Desktop.
Save wdsrocha/499540e7fa65ea3ac9bdf63867bc5995 to your computer and use it in GitHub Desktop.
Jogo da Velha simples (incompleto)
from random import randint
CPU_FACIL = "CPU (fácil)"
CPU_DIFICIL = "CPU (difícil)"
jogador = ["", ""]
simbolo = ["X", "O"]
def mostraTelaJogo(raw_tabuleiro):
print("-----------------")
print("{} vs {}".format(jogador[0], jogador[1]))
tabuleiro = [x if x else " " for x in raw_tabuleiro]
print(*tabuleiro[1:4], "| 1 2 3")
print(*tabuleiro[4:7], "| 4 5 6")
print(*tabuleiro[7:10],"| 7 8 9")
print("-----------------")
def jogoDaVelha(tabuleiro):
simbolo_atual = simbolo[0]
jogador_atual = jogador[0]
while 0 in tabuleiro[1:]:
if jogador_atual == CPU_FACIL:
posicoes_validas = [i for i in range(1, 10) if tabuleiro[i] == 0]
indice = randint(0, len(posicoes_validas)-1)
posicao = posicoes_validas[indice]
elif jogador_atual == CPU_DIFICIL:
return "CPU"
else:
mostraTelaJogo(tabuleiro)
posicao = int(input("{} é sua vez: ".format(jogador_atual)))
if 1 <= posicao <= 9 and tabuleiro[posicao] == 0:
tabuleiro[posicao] = simbolo_atual
if tabuleiro[1] == tabuleiro[2] == tabuleiro[3] == simbolo_atual or\
tabuleiro[4] == tabuleiro[5] == tabuleiro[6] == simbolo_atual or\
tabuleiro[7] == tabuleiro[8] == tabuleiro[9] == simbolo_atual or\
tabuleiro[1] == tabuleiro[4] == tabuleiro[7] == simbolo_atual or\
tabuleiro[2] == tabuleiro[5] == tabuleiro[8] == simbolo_atual or\
tabuleiro[3] == tabuleiro[6] == tabuleiro[9] == simbolo_atual or\
tabuleiro[1] == tabuleiro[5] == tabuleiro[9] == simbolo_atual or\
tabuleiro[3] == tabuleiro[5] == tabuleiro[7] == simbolo_atual:
mostraTelaJogo(tabuleiro)
return jogador_atual
simbolo_atual = simbolo[0] if simbolo_atual == simbolo[1] else simbolo[1]
jogador_atual = jogador[0] if jogador_atual == jogador[1] else jogador[1]
else:
print("Escolha uma jogada válida")
mostraTelaJogo(tabuleiro)
return None
def inicializaJogo():
telaEscolherPrimeiroJogador()
tabuleiro = 10*[0]
vencedor = jogoDaVelha(tabuleiro)
if vencedor == None:
print("Velhou!")
else:
print("{} venceu!".format(vencedor))
return telaPosJogo()
def telaPosJogo():
escolha = input("Jogar novamente? [s/n] ")
if escolha == "s":
return inicializaJogo()
elif escolha == "n":
return telaMenu()
else:
return telaPosJogo()
def telaEscolherPrimeiroJogador():
print("Quem jogará primeiro?")
print("1. {}".format(jogador[0]))
print("2. {}".format(jogador[1]))
print()
print("q. Retornar ao menu.")
escolha = input()
if escolha == "q":
return telaMenu()
elif escolha == "1":
pass
elif escolha == "2":
jogador[0], jogador[1] = jogador[1], jogador[0]
else:
return telaEscolherPrimeiroJogador()
def telaCreditos():
print("Wesley")
print()
print("q. Retornar ao menu.")
escolha = input()
if escolha == "q":
return telaMenu()
else:
return telaCreditos()
def telaMenu():
print("1. Jogador vs CPU fácil")
print("2. Jogador vs CPU difícil")
print("3. Jogador vs Jogador")
print("4. Créditos")
print("5. Sair")
escolha = input()
if escolha == "1":
jogador[0] = input("Nome: ")
jogador[1] = CPU_FACIL
return inicializaJogo()
elif escolha == "2":
jogador[0] = input("Nome: ")
jogador[1] = CPU_DIFICIL
return inicializaJogo()
elif escolha == "3":
jogador[0] = input("Nome: ")
jogador[1] = input("Nome: ")
return inicializaJogo()
elif escolha == "4":
return telaCreditos()
elif escolha == "5":
return 0
else:
return telaMenu()
def main():
telaMenu()
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment