Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Cálculo do Jogo

Bom dia, preciso de uma ajuda! Reparei que meu cálculo do jogo está apenas retirando a pontuação relativa a primeira jogada, como verão abaixo, o que eu devo fazer para que ele some o cálculo de todas as rodadas antes de enviar a pontuação final ao usuário?

import random

print("*****************")
print("Bem-vindo ao jogo!")
print("*****************")

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

print(numero_secreto)

print("Escolha um nível de dificuldade:")
print("(1) Fácil (2) Médio (3) Difícil")
nivel = int(input("Defina o nível: "))

if(nivel == 1):
    tentativas = 10
elif(nivel == 2):
    tentativas = 7
elif(nivel == 3):
    tentativas = 2
else:
    print("Opção inválida!")

for rodada in range(1, tentativas + 1):
    print("Tentativa {} de {}".format(rodada, tentativas))
    chute_str = input("Digite um número entre 1 e 100: ")
    chute = int(chute_str)

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

    acertou = (chute == numero_secreto)
    numero_maior = (chute > numero_secreto)
    numero_menor = (chute < numero_secreto)

    if (acertou):
        print("Parabéns, você acertou o número secreto e fez {} pontos!".format(pontos))
        break
    else:
        if (numero_maior):
            print("Você errou, seu chute é maior do que o número secreto!")
            if(rodada == tentativas):
                print("O número secreto era {}. Você fez {} pontos!".format(numero_secreto, pontos))
        elif (numero_menor):
            print("Você errou, seu chute foi menor do que o número secreto!")
            if(rodada == tentativas):
                print("O número secreto era {}. Você fez {} pontos".format(numero_secreto, pontos))
        pontos = pontos - abs(numero_secreto - chute)

print("Fim de jogo!")
2 respostas

A saída mostra que fiz 973 pontos, que seriam referentes apenas a subtração do primeiro chute com o número secreto, descartando a outra tentativa do cálculo final:

*****************
Bem-vindo ao jogo!
*****************
37
Escolha um nível de dificuldade:
(1) Fácil (2) Médio (3) Difícil
Defina o nível: 3
Tentativa 1 de 2
Digite um número entre 1 e 100: 10
Você errou, seu chute foi menor do que o número secreto!
Tentativa 2 de 2
Digite um número entre 1 e 100: 5
Você errou, seu chute foi menor do que o número secreto!
O número secreto era 37. Você fez 973 pontos
Fim de jogo!
solução!

Bom dia Ana, tudo bem? Espero que sim!

O cálculo dos seus pontos está acontecendo somente depois de verificar se você perdeu, e se já perdeu, o print é mostrado na tela.

Sugiro colocar o cálculo dos pontos antes de entrar na verificação de vitória ou derrota do jogo.

Dessa forma:

if (acertou):
        print("Parabéns, você acertou o número secreto e fez {} pontos!".format(pontos))
        break
    else:
        pontos = pontos - abs(numero_secreto - chute)
        if (numero_maior):
            print("Você errou, seu chute é maior do que o número secreto!")
            if(rodada == tentativas):
                print("O número secreto era {}. Você fez {} pontos!".format(numero_secreto, pontos))
        elif (numero_menor):
            print("Você errou, seu chute foi menor do que o número secreto!")
            if(rodada == tentativas):
                print("O número secreto era {}. Você fez {} pontos".format(numero_secreto, pontos))

Logo no início do else.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software