5
respostas

Quero fazer um modo de pontuação diferente, mas não estou sabendo

Quero estabelecer 3 níveis de dificuldade, sendo a mais fácil com 7 chances e a mais difícil com 5 chances, e quero que, caso o jogador acerte na quinta rodada ele ganhe ouro, se acertar na sexta ganha prata e se acertar na sétima ganha bronze (essa pontuação independe se ele escolhe ter 5, 6 ou 7 chances, importa apenas em qual rodada ele acertou). Mas não estou sabendo como fazer isso. Entendo a lógica, mas me parece que deve haver algum comando próprio pra isso. if acertou em 5 rodadas, print ganhou ouro if acertou em 6 rodadas, print ganhou prata if acertou em 7 rodadas, print ganhou bronze

5 respostas
import random

print("?????????????????????????????????")
print("Bem vindo ao jogo de Adivinhação de número de 1 a 100!")
print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")

num_aleatorio = int(random.randrange(1, 101))
numero_secreto = num_aleatorio
chances = 0
print("Escolha o nível de dificuldade:")
print("3-ouro, 2-prata, 1-bronze")
nivel = int(input("Defina o nível 1, 2 ou 3: "))
if (nivel == 1):
    chances = 7
elif (nivel == 2):
    chances = 6
elif (nivel == 3):
    chances = 5
else:
    print ("opção inválida, reinicie o jogo")

rodada = 1
for rodada in range (1, chances + 1):
    print("Tentativa {} de {}".format (rodada, chances))
    chute = input("digite seu chute entre 1 e 100: ")
    print("voce digitou " , chute)
    chutou = int(chute)

    acertou     = numero_secreto == chutou
    chute_alto  = numero_secreto < chutou
    chute_baixo = numero_secreto > chutou
    if acertou:
      print("ACERTOU!")
      print("fim do jogo")
      break
    else:
        if (chutou < 1 or chutou > 100):
            print("O chute deve ser entre 1 e 100, perdeu uma chance!")
        else:
            if chute_alto:
                print("chutou alto")
            if chute_baixo:
                print("chutou baixo")

    if rodada == chances:
        print("ACABARAM SUAS CHANCES, FIM DO JOGO")
        print("O numero era:")
        print(numero_secreto)

Que tal isso, você uma variável "rodada" que acredito guardar o número de rodadas do jogo e o que você precisa é que, após a execução do laço for, seja tomada um decisão relacionada a essa variável e pra cada caso, seja impresso na tela a medalha do jogador.

(rodada <= 5) ouro, (rodada > 5 && <=6) prata, (rodada >6 && <=7) bronze.

Suerte!

Se eu entendi bem a sua necessidade, você quer dar uma medalha conforme o nível escolhido e somente em caso de Acerto. Se for isso mesmo, você fez um trecho de código em caso de acerto:

if acertou: print("ACERTOU!") print("fim do jogo") break

Dentro desse IF você adiciona outros if verificando qual foi o nível escolhido no início e de acordo com o nível define a mensagem. Exemplo:

if acertou:
  print("ACERTOU!")
  if nivel == 1:
      print('Medalha de Bronze')

E continua . Não sei se fui claro e se consegui ajudar.

Olá, Guilherme, não é com relação ao nível escolhido, mas a quantas tentativas o jogador usou para acertar. Se acertou com 5, ganha ouro; se acertou com 6, ganha prata; e se acertou com 7, ganha bronze. Ou seja, se ele escolher ter mais chances (7) e acertar em 5, ganha ouro. Sei que, com essas regras não há vantagem em escolher o nível difícil, mas ainda estou pensando o meu modo de pontuação. Talvez eu mude para apenas 1 modo de jogo e pontuação maior pra quem acertar em menos tentativas. Acho que vou tentar tirar as opções de dificuldade e apenas criar uma pontuação pelas tentativas, mesmo assim não sei como fazer

George, obrigado pela dica, acho que é por aí, vou tentar fazer, mas ainda não defini o modelo final de pontuação