Olá Kassia, tudo bem com você?
Fico feliz que tenha compartilhado o seu código no fórum Alura. Meus parabéns pela implementação do código.
No jogo da Adivinhação foi definido que os pontos perdidos pelo usuário a cada tentativa será a diferença entre o número secreto e o valor que foi chutado, declarado na seguinte linha de código: pontos_perdidos = abs(numero_secreto - chute)
.
Assim, mesmo que o usuário escolha o nível dificuldade Difícil
ele irá pontuar ao final do jogo, já que ele inicia com 1000 pontos, e por ter uma quantidade baixa de tentativa (5), não será suficiente para perder todos os pontos ao errar todas as tentativas. A dificuldade do jogo possui o objetivo de apenas limitar a quantidade máxima de tentativas disponível para o usuário.
Uma dica que posso dar para implementar o código, será definir um fator multiplicador, que será usado para fazer com que ao jogar em uma dificuldade maior, os pontos perdidos sejam maiores. Para isso, no momento em que é declarado o total de tentativas, iremos definir os fatores multiplicadores, como apresentado abaixo.
if nivel == 1:
total_de_tentativas = 20
fator_multiplicador = 1.0
elif nivel == 2:
total_de_tentativas = 10
fator_multiplicador = 1.5
else:
total_de_tentativas = 5
fator_multiplicador = 2.0
No código acima estamos dizendo que para o nível 1 (fácil) o fator multiplicador será 1.0
, para o nível 2 (médio) será 1.5
e no último nível (difícil) será 2.0
. Usaremos esse fator multiplicador no momento em que declaramos a variável pontos_perdidos
, como apresentado abaixo.
pontos_perdidos = abs(numero_secreto - (chute * fator_multiplicador))
Desta forma estamos definindo que ao errar no nível 2 (médio) o usuário perderá 50% mais pontos e jogando no nível difícil ele perderá o dobro de pontos. Essa implementação trará um peso maior ao erro do usuário.
Código completo com a dica de implementação aplicada
import random
print(33 * '*')
print('Bem vindo ao jogo de Adivinhação!')
print(33 * '*')
total_de_tentativas = 0
numero_secreto = random.randrange(1, 101)
pontos = 1000
print('Qual nilvel de dificuldade?')
print('(1) Fácíl (2) Médio (3) Difícil')
nivel = int(input('Defina seu nível: '))
if nivel == 1:
total_de_tentativas = 20
fator_multiplicador = 1.0
elif nivel == 2:
total_de_tentativas = 10
fator_multiplicador = 1.5
else:
total_de_tentativas = 5
fator_multiplicador = 2.0
for rodada in range(1, total_de_tentativas + 1):
print(f'Tentativa {rodada} de {total_de_tentativas}.')
chute = int(input('Digite o numero :'))
pontos_perdidos = abs(numero_secreto - (chute * fator_multiplicador))
pontos = pontos - pontos_perdidos
if chute < 1 or chute > 100:
print('Você deve digitar um número entre 1 e 100!')
continue
if rodada == total_de_tentativas:
print(f'O número secreto era {numero_secreto}. Você fez {pontos}')
elif chute == numero_secreto:
print('Parabéns! Você acertou!')
print(f'Você acertou e fez {pontos} pontos!')
break
elif chute > numero_secreto:
print('Você errou! O seu chute foi maior que o número secreto.')
elif chute < numero_secreto:
print('Você errou! O seu chute foi menor que o número secreto.')
elif chute < 1 or chute > 100:
print('Você deve digitar um número entre 1 e 100!')
continue
print('Fim do jogo')
Caso queira implementar o seu código com a proposta acima, lembre-se de salvar o arquivo após as mudanças e antes de executá-lo.
Espero ter ajudado. Em caso de dúvidas estou à disposição.
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!