1
resposta

Jogo da adivinhação, pontuação por niveis

Gostaria de auxílio, se for possível neste código, de elaborar ainda mais os níveis de dificuldade. Seria, no caso a adição de diminuição dos pontos de acordo com a dificuldade. Tentei dessa forma mas não obtive êxito. A aritmética é apenas um exemplo, poderiam ser feitos cálculos mais pertinentes.

import random

def jogar(): print("*") print("Bem vindo ao jogo de Adivinhação!") print("*")

numero_secreto = random.randrange(1, 101)
total_de_tentativas = 0
pontos = 1000

print("Qual o nível de dificuldade?")
print("(1) Fácil (2) Médio (3) Difícil")

nivel = int(input("Defina o nível: "))

if nivel == 1:
    pontos = 1000
    pontos_perdidos = abs(numero_secreto - (chute/2))
    total_de_tentativas = 20

elif nivel == 2:
    pontos = 500
    pontos_perdidos = abs(numero_secreto - chute)
    total_de_tentativas = 10
else:
    pontos = 300
    pontos_perdidos = abs(numero_secreto - (chute*2)
    total_de_tentativas = 5

for rodada in range(1, total_de_tentativas + 1):
    print("Tentativa {} de {}".format(rodada, total_de_tentativas))

    chute_str = input("Digite um número entre 1 e 100: ")
    print("Você digitou ",  chute_str)
    chute = int(chute_str)

    if chute < 1 or chute > 100:
        print("Você deve digitar um número entre 1 e 100!")
        continue

    acertou = chute == numero_secreto
    maior = chute > numero_secreto
    menor = chute < numero_secreto

    if acertou:
        print("Você acertou e fez {} pontos!".format(pontos))
        break
    else:
        if maior:
            print("Você errou! O seu chute foi maior do que o número secreto.")
        elif menor:
            print("Você errou! O seu chute foi menor do que o número secreto.")
        pontos_perdidos = abs(numero_secreto - chute)
        pontos = pontos - pontos_perdidos

print("Fim do jogo")

if name == "main": jogar()

1 resposta

Na segunda parte é explicado um pouco mais sobre as funções, uma alternativa que pode auxiliar na implementação da sua ideia. Mas uma sugestão sem o uso de função é testar o nível e fazer o calculo conforme o nível na hora de 'creditar' os pontos perdidos:

        if acertou:
            print("Você acertou e fez {} pontos!".format(pontos))
            break
        else:
            if maior:
                print("Você errou! O seu chute foi maior do que o número secreto.")
            elif menor:
                print("Você errou! O seu chute foi menor do que o número secreto.")

            pontos_perdidos = 0

            if nivel == 1:
                pontos_perdidos = abs(numero_secreto - (chute/2))
            elif nivel == 2:
                pontos_perdidos = abs(numero_secreto - chute)
            else:
                pontos_perdidos = abs(numero_secreto - (chute*2))

            # pontos_perdidos = abs(numero_secreto - chute)
            pontos = pontos - pontos_perdidos