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

Jogo com nível de dificuldade e pontuação

O meu programa do jogo de adivinhação está assim:

import random

print("Bem vindo ao jogo de Adivinhação da Kakau!")

numeroSecreto = random.randrange(1,101)
tentativasTotal = 0
pontos = 1000

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

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

if(nivel == 1):
  tentativasTotal = 25
elif(nivel == 2):
  tentativasTotal = 15
else:
  tentativasTotal = 5

for rodada in range(1, tentativasTotal + 1):
  print("Tentativa {} de {}".format(rodada, tentativasTotal))
  chuteStr = input("Digite um número entre 1 e 50: ")
  print("Você digitou", chuteStr)
  chute = int(chuteStr)

  if(chute < 1 or chute > 50):
    print("Você deve digitar um número entre 1 e 50 (ಠ⌣ಠ)")
    continue;

  acertou = numeroSecreto == chute
  maior   = chute > numeroSecreto
  menor   = chute < numeroSecreto

  if(acertou):
    print("Parabéns! Você acertou e fez {} pontos! ( ✧≖ ͜ʖ≖)".format(pontos))
    break;
  else:
    if(maior):
      print("Você errou! O seu chute foi maior que o número secreto. ¯\_(ツ)_/¯")
    elif(menor):
      print("Você errou! O seu chute foi menor que o número secreto. ¯\_(ツ)_/¯")
    pontosPerdidos = abs(numeroSecreto - chute)
    pontos = pontos - pontosPerdidos

print("Fim do jogo")
5 respostas
solução!

numeroSecreto = random.randrange(1,101)

if(chute < 1 or chute > 50): print("Você deve digitar um número entre 1 e 50 (ಠ⌣ಠ)") continue;

Fui tapeado xD

o meu ficou assim:

    print('-' * 38)
    print('-- Bem vindo ao jogo de Adivinhação --')
    print('-' * 38)

    numero_secreto = int(random.random() * 100)
    tentativas = 0
    rodada = 0
    pontos = float(10)
    menospontos = 0

    nivel = int(input('Escolha o nível de dificuldade:'
                      '\n[1] Fácil'
                      '\n[2] Médio'
                      '\n[3] Difícil'
                      '\n---> '))

    if (nivel == 1):
        tentativas = 15
        menospontos = float(1.5)
    elif (nivel == 2):
        tentativas = 10
        menospontos = float(1)
    else:
        tentativas = 5
        menospontos = float(0.50)

    while(rodada < tentativas):
        chute = int(input('Tentativa {} de {}.'
                          '\nDigite um número entre 1 e 100: '
                          .format(rodada + 1, tentativas)))
        acerto = chute == numero_secreto
        maior = chute > numero_secreto
        menor = chute < numero_secreto

        if (chute < 1 or chute > 100):
            print('Você deve digitar um número entre 1 e 100!'
                  '\nTentativa desperdiçada.')
            continue

        if(acerto):
            print('Parabéns! Você acertou o número!')
        else:
            if(maior):
                print('Você errou, o número {} é maior que o número secreto.\nTente novamente.'.format(chute))
            elif(menor):
                print('Você errou, o número {} é menor que o número secreto.\nTente novamente.'.format(chute))
        rodada += 1

    if(chute != numero_secreto or pontos < 0):
        pontos = 0

    print('Você fez {} pontos!'
          'Game Over!'
          .format(pontos))

para tirar a indentação do código, selecione tudo e aperte shift+backspace

O mesmo código, mas em laço for

    print('-' * 38)
    print('-- Bem vindo ao jogo de Adivinhação --')
    print('-' * 38)

    numero_secreto = random.randrange(1, 101)
    tentativas = 0
    pontos = float(10)
    menospontos = 0

    nivel = int(input('Escolha o nível de dificuldade:'
          '\n[1] Fácil'
          '\n[2] Médio'
          '\n[3] Difícil'
                      '\n---> '))

    if(nivel == 1):
        tentativas = 15
        menospontos = float(1.5)
    elif(nivel == 2):
        tentativas = 10
        menospontos = float(1)
    else:
        tentativas = 5
        menospontos = float(0.50)

    for rodada in range(tentativas):
        chute = int(input('Tentativa {} de {}.'
                          '\nDigite um número entre 1 e 100: '
                          .format(rodada + 1, tentativas)))
        acerto = chute == numero_secreto
        maior = chute > numero_secreto
        menor = chute < numero_secreto

        if(chute < 1 or chute > 100):
            print('Você deve digitar um número entre 1 e 100!'
                  '\nTentativa desperdiçada.')
            continue

        if(acerto):
            print('Parabéns! Você acertou o número!')
            break
        else:
            if(maior):
                print('Você errou, o número {} é maior que o número secreto.\nTente novamente.'.format(chute))
            elif(menor):
                print('Você errou, o número {} é menor que o número secreto.\nTente novamente.'.format(chute))
            pontos = pontos - menospontos

    if(chute != numero_secreto or pontos < 0):
        pontos = 0

    print('Você fez {} pontos!'
          'Game Over!'
          .format(pontos))

Nossa verdade! Não tinha reparado nessa confusão:

numeroSecreto = random.randrange(1,101)

if(chute < 1 or chute > 50):
    print("Você deve digitar um número entre 1 e 50 (ಠ⌣ಠ)")
    continue;

Já alterei o 101 por 51. Obrigada por avisar!

Boa galera!

Eu percebi essa diferença ai pra resolver eu coloquei pro usuário escolher até qual número o sorteio será feito.

Ficou assim e depois você substituir o valor fixo pela variável "valor_max" que tudo fica certinho.

valor_max = int(input("Digite de 1 até qual número você desejar realizar o sorteio: "))
    numero_advinhacao = random.randrange(1,valor_max+1)