Eu desenvolvi algo um pouco além, fiz uma melhor de 3. Nele o jogador irá jogar contra a máquina até ganhar dois jogos. Eu tive que pedir alguns auxílios de IA, para como fazer o resultado da função parar o loop, mas foi só nesse momento, o restante foi o meu desenvolvimento. E creio que se fizesse um sistema com classe e dividido em alguns arquivos, em moldes de Orientado a Objetos o código poderia ficar melhor estruturado. Segue o meu código:
import random
jogador = 0
pc = 0
def sistema_escolha(decisao):
opcoes = ['P', 'A', 'T']
sistema = random.choice(opcoes)
global jogador, pc
if decisao == 'P' and sistema == 'T':
jogador += 1
return '\nvocê venceu! Pedra quebra Tesoura.'
elif decisao == 'P' and sistema == 'A':
pc += 1
return '\nvocê perdeu! Papel cobre Pedra.'
elif decisao == 'A' and sistema == 'P':
jogador += 1
return '\nvocê venceu! Papel cobre Pedra.'
elif decisao == 'A' and sistema == 'T':
pc += 1
return '\nvocê perdeu! Tesoura corta Papel.'
elif decisao == 'T' and sistema == 'A':
jogador += 1
return '\nvocê venceu! Tesoura corta Papel.'
elif decisao == 'T' and sistema == 'P':
pc += 1
return '\nvocê perdeu! Pedra quebra Tesoura.'
elif decisao == sistema:
return '\nEmpate! Ambos colocaram o mesmos símbolo.'
def verificar_vencedor(jogador, pc):
if jogador == 2:
return 'Parabéns! Você ganhou o jogo !'
elif pc == 2:
return 'Que pena! O computador ganhou o jogo !'
return None
print('Este é o jogo de Pedra, Papel e Tesoura!')
while True:
resutado_final = verificar_vencedor(jogador, pc)
if resutado_final:
print('#' * 30)
print(resutado_final)
print('#' * 30)
break
escolha = input('\nEscolha entre Pedra[P], Papel[A], Tesoura[T] ou Sair[S]: ').upper()
resutado = sistema_escolha(escolha)
if escolha == 'S':
print("Boa sorte! Até a próxima.")
break
if escolha not in ['P', 'A', 'T']:
print('\nEscolha inválida! Tente novamente.')
continue
print(resutado)
print('\n')
print('-' * 30)
print(f'\nPlacar: Jogadotor {jogador} x {pc} Computador\n')
print('-' * 30)