Created
June 2, 2017 17:21
-
-
Save wdsrocha/499540e7fa65ea3ac9bdf63867bc5995 to your computer and use it in GitHub Desktop.
Jogo da Velha simples (incompleto)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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