<reponame>PedroHAlvesS/Exercicios-Python-Curso-em-video
import os
import time
import random

def cls():
    # Limpar tela
    os.system('cls' if os.name == 'nt' else 'clear')


def Intro():
    # Introdução do jogo
    print("=*" * 20)
    print(f"{'Jogo da Adivinhação':^40}")
    print("=*" * 20)
    time.sleep(2)
    cls()
    print("=*" * 20)
    print(f"{'Tente adivinhar o número sorteado':^40}")
    print("=*" * 20)
    time.sleep(2)


def menu():
    # Menu de opções com tentativas
    while True:
        print("*=" * 21)
        print(f"{'Opção | Dificuldade | Info':^40}")
        print("-"*42)
        print("           1 |    Fácil    | 20 tentativas")
        print("           2 |    Médio    | 10 tentativas")
        print("           3 |   Difícil   | 5 tentativas")
        print("*=" * 21)
        try:
            opcao_menu = int(input("Qual a dificuldade do jogo?\n"))
            if (opcao_menu < 1 or opcao_menu > 3):
                print("Por favor, informe uma opção válida, de 1 a 4\n")
                time.sleep(2)
                cls()
                continue
            else:
                break
        except:
            print("Por favor, informe uma opção válida, de 1 a 4\n")
            time.sleep(2)
            cls()
    if (opcao_menu == 1):
        chance = 20
    elif (opcao_menu == 2):
        chance = 10
    else:
        chance = 5
    return chance


def numero_digitado():
    """
    Válida o número digitado pelo usuário
    :return: retorna o número digitado já validado pro game
    """
    while True:
        try:
            numero_player = int(input("Seu palpite >> "))
            if (numero_player < 1 or numero_player > 100):
                print("Por favor, informe um número entre 1 e 100\n")
                continue
            else:
                break
        except:
            print("Não conseguir entender, por favor digite um número inteiro")
    return numero_player


def logica_game(x:int, num_rand:int):
    """
    Contém toda lógica dos ifs e ira retornar o i (variável de controle)
    :param x: Número inteiro com a quantidade de tentativas escolhida no menu
    :return: Caso retorne 0 significa que o jogador ganhou, caso retorne diferente de 0 significa q perdeu.
    Retorna também os pontos
    """
    pontos = 100
    print("tente adivinhar um número entre 1 e 100\n")
    for i in range(x):
        numero_jogador = numero_digitado()  # Pega o número do usuario
        # Verificação
        menor = numero_jogador > num_rand
        maior = numero_jogador < num_rand
        pontos = pontos - abs(num_rand - numero_jogador)
        if (menor):
            print("O número aleatório é menor do que o seu")
        elif (maior):
            print("O número aleatório é maior do que o seu")
        else:
            i = 0
            break
        print(f"{i + 1} de {x} tentativas")
        print("-" * 20)
    return i, pontos


def Jogar():
    Intro()
    cls()
    tentativas = menu()  # Menu com as dificuldades (tentativas)
    cls()
    numero_aleatorio = random.randint(1, 100)  # gera numeros aleatorios

    ganhou, pontos_player = logica_game(tentativas, numero_aleatorio)  # logica dos ifs do game

    if (ganhou == 0):
        print("Parabéns, você acertou o número")
        print(f"Sua pontuação: {pontos_player}/100")
    else:
        print(f"Infelizmente você não conseguiu adivinhar o número {numero_aleatorio}")


if (__name__ == "__main__"):
    Jogar()

import os
import time
import random

def cls():
    # Limpar tela
    os.system('cls' if os.name == 'nt' else 'clear')


def Intro():
    # Introdução do jogo
    print("=*" * 20)
    print(f"{'Jogo da Adivinhação':^40}")
    print("=*" * 20)
    time.sleep(2)
    cls()
    print("=*" * 20)
    print(f"{'Tente adivinhar o número sorteado':^40}")
    print("=*" * 20)
    time.sleep(2)


def menu():
    # Menu de opções com tentativas
    while True:
        print("*=" * 21)
        print(f"{'Opção | Dificuldade | Info':^40}")
        print("-"*42)
        print("           1 |    Fácil    | 20 tentativas")
        print("           2 |    Médio    | 10 tentativas")
        print("           3 |   Difícil   | 5 tentativas")
        print("*=" * 21)
        try:
            opcao_menu = int(input("Qual a dificuldade do jogo?\n"))
            if (opcao_menu < 1 or opcao_menu > 3):
                print("Por favor, informe uma opção válida, de 1 a 4\n")
                time.sleep(2)
                cls()
                continue
            else:
                break
        except:
            print("Por favor, informe uma opção válida, de 1 a 4\n")
            time.sleep(2)
            cls()
    if (opcao_menu == 1):
        chance = 20
    elif (opcao_menu == 2):
        chance = 10
    else:
        chance = 5
    return chance


def numero_digitado():
    """
    Válida o número digitado pelo usuário
    :return: retorna o número digitado já validado pro game
    """
    while True:
        try:
            numero_player = int(input("Seu palpite >> "))
            if (numero_player < 1 or numero_player > 100):
                print("Por favor, informe um número entre 1 e 100\n")
                continue
            else:
                break
        except:
            print("Não conseguir entender, por favor digite um número inteiro")
    return numero_player


def logica_game(x:int, num_rand:int):
    """
    Contém toda lógica dos ifs e ira retornar o i (variável de controle)
    :param x: Número inteiro com a quantidade de tentativas escolhida no menu
    :return: Caso retorne 0 significa que o jogador ganhou, caso retorne diferente de 0 significa q perdeu.
    Retorna também os pontos
    """
    pontos = 100
    print("tente adivinhar um número entre 1 e 100\n")
    for i in range(x):
        numero_jogador = numero_digitado()  # Pega o número do usuario
        # Verificação
        menor = numero_jogador > num_rand
        maior = numero_jogador < num_rand
        pontos = pontos - abs(num_rand - numero_jogador)
        if (menor):
            print("O número aleatório é menor do que o seu")
        elif (maior):
            print("O número aleatório é maior do que o seu")
        else:
            i = 0
            break
        print(f"{i + 1} de {x} tentativas")
        print("-" * 20)
    return i, pontos


def Jogar():
    Intro()
    cls()
    tentativas = menu()  # Menu com as dificuldades (tentativas)
    cls()
    numero_aleatorio = random.randint(1, 100)  # gera numeros aleatorios

    ganhou, pontos_player = logica_game(tentativas, numero_aleatorio)  # logica dos ifs do game

    if (ganhou == 0):
        print("Parabéns, você acertou o número")
        print(f"Sua pontuação: {pontos_player}/100")
    else:
        print(f"Infelizmente você não conseguiu adivinhar o número {numero_aleatorio}")


if (__name__ == "__main__"):
    Jogar()
# Limpar tela # Introdução do jogo # Menu de opções com tentativas Válida o número digitado pelo usuário     :return: retorna o número digitado já validado pro game Contém toda lógica dos ifs e ira retornar o i (variável de controle)     :param x: Número inteiro com a quantidade de tentativas escolhida no menu     :return: Caso retorne 0 significa que o jogador ganhou, caso retorne diferente de 0 significa q perdeu.     Retorna também os pontos # Pega o número do usuario # Verificação # Menu com as dificuldades (tentativas) # gera numeros aleatorios # logica dos ifs do game