1
resposta

Meu projeto no final do curso, aceito sugestões e críticas :)

from random import randint


def jogar():
    print('*' * 36)
    print(f'{"Bem vindo ao jogo de adivinhação".center(35)}')
    print('*' * 36)

    total_de_tentativas = 0
    pontos = 1000

    # Criação de uma variável de condição de saída do jogo iniciada como False.
    cond_saida = False

    while cond_saida is False:
        print('Qual nível de dificuldade?\n(1) Fácil (2) Médio (3) Difícil')
        while True:
            try:
                while True:
                    nivel = int(input('Defina o nível: '))
                    if nivel not in [1, 2, 3]:
                        print('Erro! Escolha umas das três opções!')
                    else:
                        break
                break
            except ValueError:
                print('Digite apenas números!')

        if nivel == 1:
            total_de_tentativas = 20
        elif nivel == 2:
            total_de_tentativas = 10
        else:
            total_de_tentativas = 5

        # Criação do número pseudo aleatório.
        numero_secreto = randint(1, 100)

        # Criação de uma lista dos números possíveis.
        alcance = list(range(1, 101))

        for rodada in range(1, total_de_tentativas + 1):
            print(f'Tentativa {rodada} de {total_de_tentativas}!')
            while True:
                try:
                    while True:
                        chute = int(input('Digite um número entre 1 e 100: '))
                        if chute not in alcance:
                            print('Erro! Digite um valor entre 1 e 100.')
                        else:
                            break
                    break
                except ValueError:
                    print('Erro! Digite somente números!')

            acertou = numero_secreto == chute  # Variável acertou é responsável pelo acerto do chute.
            maior = chute > numero_secreto
            menor = chute < numero_secreto

            if acertou:
                print(f'Você acertou! Sua pontuação foi de {pontos}!')
                print(f'Fim do jogo!\nO número sorteado foi {numero_secreto}.')
            else:
                print('Você errou!')
                if maior:
                    print('O seu chute foi maior que o número sorteado.')
                elif menor:
                    print('O seu chute foi menor que o número sorteado.')
                    pontos = pontos - abs(numero_secreto - chute)

            if acertou or rodada == total_de_tentativas:
                while True:
                    try:
                        while True:
                            continuar = input('Deseja jogar novamente? [S/N]: ').strip().upper()
                            if continuar not in 'SN':
                                print('Escolha uma opção válida!')
                            else:
                                break
                        break
                    except ValueError:
                        print('Escolha uma opção válida!')
                if continuar in 'S':
                    cond_saida = False
                    break
                elif continuar in 'N':
                    cond_saida = True
                    break

    print(f'\nVolte sempre!')


if __name__ == '__main__':
    jogar()
1 resposta

Olá, Renan!

Parabéns pelo seu projeto de jogo de adivinhação em Python! É muito legal ver o seu progresso e dedicação ao longo do curso.

Sobre o código, ele está bem estruturado e organizado. Gostei da utilização de funções para separar as diferentes etapas do jogo. Isso facilita a leitura e manutenção do código.

Uma sugestão que posso te dar é adicionar comentários explicativos em algumas partes do código, principalmente nas partes mais complexas. Isso pode ajudar outras pessoas a entenderem melhor o funcionamento do jogo.

Outra sugestão é utilizar exceções mais específicas ao invés de apenas a exceção genérica ValueError. Por exemplo, você poderia utilizar a exceção IndexError quando o usuário digitar um valor fora do alcance permitido.

Além disso, você poderia adicionar uma mensagem de encorajamento para o jogador a cada tentativa, como "Vamos lá, você consegue!" ou "Não desista, continue tentando!" Isso pode deixar o jogo mais motivador para o jogador.

Por fim, não se esqueça de testar o seu jogo em diferentes cenários para garantir que ele está funcionando corretamente. Tente pensar em casos de borda, como quando o jogador acerta o número na última tentativa ou quando o jogador erra todas as tentativas.

Espero que essas sugestões possam te ajudar a melhorar ainda mais o seu projeto. Continue praticando e se aprimorando, tenho certeza de que você vai se tornar um ótimo programador!

Se tiver mais alguma dúvida, estou à disposição. Espero ter ajudado e bons estudos!