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

Problema em Executar o Programa

Tentei executar o código que está abaixo, mas sempre aparece um erro na última linha de código do bloco de notas, mas essa linha não apresenta conteúdo algum. Desde já agradeço pela atenção.

Código:

def da_boas_vindas        
    puts "Bem vindo ao jogo de adivinhação"
    puts "Qual é o seu nome?"
    nome = gets.strip
    puts "\n\n\n\n\n\n"
    puts "Começaremos o jogo para você, #{nome}" 
    nome
end

def pede_dificuldade
    puts "Qual o nível de dificuldade que deseja? (1 fácil; 5 difícil)"
    dificuldade = gets.to_i

end

def sorteia_numero_secreto (dificuldade)
    case dificuldade
    when 1
        máximo = 30
    when 2
        máximo = 60
    when 3
        máximo = 100
    when 4
        máximo = 150
    else
         máximo = 200                       
    end
    puts "Escolhendo um número secreto entre 1 e #{máximo - 1}..."
    sorteado = rand (máximo) + 1
    puts "Escolhido...Que tal tentar adivinhar o número secreto"
    sorteado
end

def pede_um_numero(chutes, tentativa, limite_de_tentativas)
    puts "\n\n\n\n"
    puts "Tentativa #{tentativa} de #{limite_de_tentativas}"
    puts "Chutes até agora: #{chutes}" 
    puts "Entre com o número"
    puts "Digite o número"
    chute = gets.strip.to_i
    puts "Será que você acertou? Você chutou o número #{chute}" 
    chute
end

def verifica_se_acertou(numero_secreto, chute)
    acertou = numero_secreto == chute.to_i

    if acertou
        puts "Acertou!"
        return true
    end

    maior = numero_secreto > chute.to_i
        if maior
        puts "O número secreto é maior"
    else    
        puts "O número secreto é menor"
    end    
    false
end

def joga (nome, dificuldade)

    numero_secreto = sorteia_numero_secreto dificuldade

    pontos_ate_agora = 1000
    limite_de_tentativas = 5
    chutes = []

    for tentativa in 1..limite_de_tentativas

        chute = pede_um_numero chutes, tentativa, limite_de_tentativas
        chutes << chute

        if nome == "Gabriel"
            puts "Acertou!"
            break
        end    

        pontos_a_perder = (chute - numero_secreto).abs / 2.0
        pontos_ate_agora -= pontos_a_perder

        if verifica_se_acertou numero_secreto, chute
            break
        end    
    end

    puts "Você ganhou #{pontos_ate_agora} pontos."

def quer_jogar
    puts "Deseja jogar novamente? (S/N)"
    quero_jogar = gets.strip
    quero_jogar == "S"
end    

nome = da_boas_vindas
dificuldade = pede_dificuldade

while quer_jogar
    joga nome, dificuldade
end
2 respostas
solução!

Oi Gabriel, testei seu código e vi que você esqueceu de fechar o método joga. seu código está assim:

def joga
    [....]

Quando deveria estar assim:

def joga
    [....]
end

Outro ponto que notei é que você está usando palavras com assentos em nome de variaveis, apesar de funcionar, não é recomendado que use esses caracteres especiais.

Muito obrigado Wanderson