2
respostas

Código do "Jogo da Adivinhação"

Após terminar a segunda parte e aprender um pouco mais sobre a linguagem, resolvi voltar ao "Jogo da Adivinhação" e usar funções para as etapas deste jogo também.

Aproveitando e perguntando a quem tem mais experiência, já que ainda sou iniciante nesta, ficou meio bagunçado? Dá para entender corretamente?

Sei que existem várias e várias maneiras de se chegar ao resultado, compartilhando para saber a opinião mesmo.

Obrigado.

import random

def jogar():
    titulo()
    numero_secreto = cria_numero_secreto()
    pontos = define_pontuacao()
    numero_tentativas = grau_de_dificuldade()
    print("\nIniciando o jogo...")
    pontuacao = acertou_ou_errou(numero_tentativas,numero_secreto,pontos)
    print("\nO número secreto era {}. Terminou o jogo com {} pontos.".format(numero_secreto,pontuacao))
    print("\nFim do jogo.")

def titulo():
    print("*********************************")
    print("Bem-vindo ao Jogo da Adivinhação!")
    print("*********************************")

def cria_numero_secreto():
    numero_secreto = random.randrange(1,101)
    return numero_secreto

def define_pontuacao():
    pontos = 1000
    return pontos

def grau_de_dificuldade():
    escolha = True
    while (escolha):
        print("\nQual o nível de dificuldade?\n1 - Fácil\n2 - Médio\n3 - Difícil")
        nivel = input("Defina o nível: ").strip()
        if (nivel.isdigit() == True):
            nivel_int = int(nivel)
            if (nivel_int == 1):
                numero_tentativas = 20
                break
            elif(nivel_int == 2):
                numero_tentativas = 10
                break
            elif(nivel_int == 3):
                numero_tentativas = 5
                break
            else:
                print("Não foi digitado um número válido.")
        else:
            print("Não foi digitado um número válido.")
    return numero_tentativas

def acertou_ou_errou(numero_tentativas,numero_secreto,pontos):
    for rodada in range(1, numero_tentativas + 1):
        print("\nTentativa {:02d} de {:02d}.".format(rodada,numero_tentativas))
        chute_str = input("Digite o seu número entre 1 e 100: ")
        chute_int = int(chute_str)
        print("\nVocê digitou {}.".format(chute_int))
        if (chute_int < 1 or chute_int > 100):
            print("\nVocê digitou um número inválido. Deve ser entre 1 e 100.")
            continue
        acertou = numero_secreto == chute_int
        chute_maior = numero_secreto > chute_int
        chute_menor = numero_secreto < chute_int
        if(acertou):
            print("\nVocê acertou!  \o/")
            break
        else:
            sem_tentativas = rodada
            if (chute_menor) :
                print("O seu chute foi maior que o número secreto.")
            elif (chute_maior) :
                print("O seu chute foi menor que o número secreto.")
            print("Você errou!")
            pontos_perdidos = abs(numero_secreto - chute_int)
            pontos = pontos - pontos_perdidos
    return pontos

if(__name__ == "__main__"):
    jogar()
2 respostas

Oi Hudson beleza ?

Da para entender o código sim =) O importante no começo é entender bem as estrutras e a lógica do que estamos fazendo !!

Que tal quando acabar a parte 3 voltar nesse mesmo desafio e tentar refatorar ainda mais as funções grau_de_dificuldade e acertou_ou_errou

Obrigado pelo feedback, Felipe. Vou ver as suas sugestões.