Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Pedra, papel e tesoura

Tentei criar um jogo inspirado em Jogos mortais, apenas para dar um tema a proposta.

Aprendi durante a construção do código que:

  1. Posso usar um temporizador para mandar as mensagens ao usuário, com isso nasceu o Narrador Sombrio.
  2. 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)
2 respostas
solução!

Oi, Estudante! Como vai?

Agradeço por compartilhar.

Gostei da sua análise, principalmente da forma como você deu identidade ao projeto com o tema e usou o Narrador Sombrio para melhorar a experiência de quem joga.

Continue explorando esse tipo de personalização, pois ela torna seus projetos mais interessantes e demonstra cuidado com a experiência do usuário. Dica: você pode melhorar ainda mais criando uma função específica só para exibir as regras do jogo, assim o código fica mais organizado e fácil de manter.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigado.