1
resposta

Dificuldades em receber parametros

Quando executo o codigo abaixo, recebo o erro "maior_ou_menor.rb:14:in `sorteia_numero_secreto': wrong number of arguments (given 0, expected 1) (ArgumentError)". Nao sei como corrigir.

Obrigado pela atencao.

def da_boas_vindas
    puts "Bem vindo ao jogo da adivinhacao"
    puts "Qual e o seu nome?"
    nome = gets.strip
    puts "\n\n\n\n"
    puts "Comecaremos o jogo para voce, #{nome}."
end

def pede_dificuldade
    puts "Qual o nivel de dificuldade? (1 facil, 5 dificil)"
    dificuldade = gets.to_i
end

def sorteia_numero_secreto(dificuldade)

    case dificuldade
    when 1
        maximo = 25
    when 2
        maximo = 50
    when 3
        maximo = 100
    when 4
        maximo = 150
    else
        maximo = 200

    end

    puts "Escolhendo um numero secreto entre 0 e #{maximo}..."
    sorteado = rand * maximo
    puts "Escolhido... que tal adivinhar nosso numero secreto?"
    sorteado.to_i
end

def pede_um_numero(chutes, tentativa, limite_de_tentativas)
    puts "\n\n\n\n"
    puts "Tentativa #{tentativa} de #{limite_de_tentativas}."
        if chutes.size > 0
                puts "Voce ja chutou os numeros: #{chutes}."
        end
    puts "Entre com um numero"
    chute = gets.strip
    puts "Sera que acertou? Voce chutou #{chute}."
    chute.to_i
end

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

    if acertou
        puts "Acertou!"
        sleep 3 #seconds
        return true
    end

    puts "Errou..."
    maior = numero_secreto > chute
    if maior
        puts "O numero e maior!"
    else
        puts "O numero e menor!"
    end
    false
end

da_boas_vindas

dificuldade = pede_dificuldade

numero_secreto = sorteia_numero_secreto

pontos_ate_agora = 1000

limite_de_tentativas = 2
chutes = []

for tentativa in 1..limite_de_tentativas
    chute = pede_um_numero chutes, tentativa, limite_de_tentativas
    chutes << chute

    pontos_a_perder = (chute - numero_secreto).abs / 2.0
    pontos_ate_agora -= pontos_a_perder
    puts "Voce ganhou #{pontos_ate_agora} pontos"


    break if verifica_se_acertou numero_secreto, chute

    if limite_de_tentativas == tentativa
        puts "O numero era #{numero_secreto}."
        sleep 10
    end

end
1 resposta

Oi Gustavo, tudo bem? O problema é que a função sorteia_numero_secreto espera receber o nível de dificuldade e você não está informando isso. Nesta linha:

numero_secreto = sorteia_numero_secreto

Ela precisa estar assim:

numero_secreto = sorteia_numero_secreto dificuldade