Tentei criar um jogo inspirado em Jogos mortais, apenas para dar um tema a proposta.
Aprendi durante a construção do código que:
- Posso usar um temporizador para mandar as mensagens ao usuário, com isso nasceu o Narrador Sombrio.
- Para evitar que o código quebre, em exercícios anteriores, criei funções para validar o que o usuário estava digitando, mas neste caso criar uma lista foi a melhor alternativa, pois limitei as decisões do usuário fazendo com que ele use apenas o que foi pedido.
obs.: No bloco de códigos, precisei remover os emojis, pois existe uma restrição que não permite emojis para postar, então no lugar da imagem está a palavra emoji, deixe caso você queira reaproveitar o codigo e inserir um emoji, do contrario, basta deletar essa palavra.
# Crie um programa que permita ao usuário escolher entre pedra, papel ou tesoura. O computador escolherá aleatoriamente uma opção. O programa deve exibir quem venceu a partida.
# ================================================================================= #
# Biblioteca Python #
# ================================================================================= #
import random # Gerar números aleatórios
import time # Módulo de tempo
# ================================================================================= #
# Funções do Programa #
# ================================================================================= #
'''Função | Jogada do usuário'''
def obter_escolha_usuario() -> str:
# Opções válidas
opcoes_validas = ['pedra', 'papel', 'tesoura']
# Primeira leitura
escolha = input("Faça sua jogada:\n").strip().lower()
# Validação em loop
while escolha not in opcoes_validas:
print("\n emoji Jogada inválida!\n")
escolha = input("Faça sua jogada, escolha entre: Pedra, Papel ou Tesoura.\n").strip().lower()
return escolha
'''Função | Jogada do computador'''
def obter_escolha_computador() -> str:
# Gera uma escolha aleatória entre as três opções
return random.choice(['pedra', 'papel', 'tesoura'])
'''Função | Decide o vencedor'''
def decidir_vencedor(jogador: str, computador: str) -> str:
if jogador == computador:
return 'empate'
# Quem vence quem
vence = {
'pedra': 'tesoura', # Pedra quebra Tesoura
'papel': 'pedra', # Papel cobre Pedra
'tesoura': 'papel' # Tesoura corta Papel
}
if vence[jogador] == computador:
return 'jogador'
else:
return 'computador'
'''Função | Narrador sombrio'''
def narrador(msg: str, pausa: float = 1.2):
# texto que será exibido
print(f" emoji {msg}")
# tempo (em segundos) antes de continuar
time.sleep(pausa)
# ================================================================================= #
# Menu do Programa #
# ================================================================================= #
if __name__ == "__main__":
# Entrada
print('')
print('=' * 50)
print(' emoji Pedra | emoji Papel | emoji Tesoura '.center(50))
print('=' * 50)
print('Regras do Jogo:')
print('-' * 50)
print('Opção | Vence | Jogada ')
print('-' * 50)
print(' emoji Pedra | emoji Tesoura | Pedra quebra Tesoura')
print(' emoji Papel | emoji Pedra | Papel cobre Pedra')
print(' emoji Tesoura | emoji Papel | Tesoura corta Papel')
print('=' * 50)
print("\n emoji Vamos jogar um jogo?")
print('')
print('A escolha é simples… sobreviver, ou não.\n')
# Jogada do Usuário
escolha = obter_escolha_usuario()
print('')
narrador("Hmm... que jogada interessante.", pausa=1.5)
print('')
narrador("Agora é a vez do computador jogar...", pausa=1.5)
# Jogada do Computador
escolha_pc = obter_escolha_computador()
print('')
narrador("Decisão tomada.", pausa=1.5)
print('')
narrador("O destino foi selado...", pausa=1.8)
print('')
print('-' * 50)
print(f'Você jogou.........: {escolha}')
print(f'Computador jogou...: {escolha_pc}')
print('-' * 50)
# Processamento
resultado = decidir_vencedor(escolha, escolha_pc)
print('')
# Saída
if resultado == 'empate':
print(' emoji Empate!')
elif resultado == 'jogador':
print(' emoji Você venceu!')
else:
print(' emoji Computador venceu!')
print('')
print("=" * 50)
narrador('Jogo encerrado!')
print("=" * 50)