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

Não sei como consertar o erro...

Apesar de entender que a função não acha o que seria a variável local "chutes", não sei por que ela pede, visto que está praticamente igual ao do instrutor...creio que a única diferença são os "#" que fiz para ficar mais "fácil" de ver

Tentativa 1 de 10 jogo.rb:21:in solicita_um_chute': undefined local variable or methodchutes' for main:Object (NameError) Did you mean? chute from jogo.rb:57:in block in <main>' from jogo.rb:55:ineach' from jogo.rb:55:in `'

insira seu código aqui
#######################################################################################
#######################################################################################
def dar_boas_vindas                                                                 ###
    puts "Bem vindo ao jogo da 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}"                                    ###
end                                                                                 ###
                                                                                    ###
def sorteia_o_numero                                                                ###
    puts "Escolhendo um número secreto entre 0 e 200..."                            ###
    sorteado = 175                                                                  ###
    puts "Escolhido... que tal adivinhar nosso número secreto de hoje?"             ###
    return sorteado                                                                 ###
end                                                                                 ###
                                                                                    ###
def solicita_um_chute(tentativas, ultima_tentativa)                                 ###
    puts "\n\n\n\n"                                                                 ###
    puts "Tentativa #{tentativas} de #{ultima_tentativa}"                              ###
    puts "Chutes ja feitos: #{chutes}"                                              ###
    puts "Entre com o numero"                                                       ###
    chute = gets.strip                                                              ###
    puts "Será que acertou? Você chutou " + chute + "..."                           ###
    return chute.to_i                                                               ###
end                                                                                 ###
                                                                                    ###
def verifica_resultado(numero_secreto, chute)                                       ###
    acertou = numero_secreto == chute                                               ###
    if acertou                                                                      ###
        puts "Parabéns! Você acertou o número secreto!"                             ###
        return true                                                                 ###
    end                                                                             ###
                                                                                    ###
                                                                                    ###
    maior = numero_secreto > chute                                                  ###
    if maior                                                                        ###
        puts "Que pena, o numero secreto é maior"                                   ###
    else                                                                            ###
        puts "Que pena, o numero secreto é menor"                                   ###
    end                                                                             ###
    return false                                                                    ###
end                                                                                 ###
#######################################################################################
#######################################################################################

dar_boas_vindas
numero_secreto = sorteia_o_numero

ultima_tentativa = 10  

chutes = []

for tentativas in 1..ultima_tentativa

    chute = solicita_um_chute(tentativas, ultima_tentativa)
    chutes[chutes.size] << chute

    if verifica_resultado(numero_secreto, chute)
        break
    end


end
2 respostas
solução!

Oi Nícolas tudo bem? Eu vi o seu código e notei que estão faltando algumas variáveis. A primeira delas é justamente a tentativas, portanto basta apenas você declarar essa variável logo antes de começar o for, conforme o código abaixo:

dar_boas_vindas
numero_secreto = sorteia_o_numero

tentativas = 1

ultima_tentativa = 10  

chutes = []

for tentativas in 1..ultima_tentativa

    chute = solicita_um_chute(tentativas, ultima_tentativa, chutes)
    chutes[chutes.size] = chute

    if verifica_resultado(numero_secreto, chute)
        break
    end

end

Em seguida veja que a função solicita_um_chute está enviando apenas 2 parâmetros que é o tentativas (que agora está declarado) e o ultima_tentativa, porém, se você der uma olhada no escopo da função:

def solicita_um_chute(tentativas, ultima_tentativa)                                 ###
    puts "\n\n\n\n"                                                                 ###
    puts "Tentativa #{tentativas} de #{ultima_tentativa}"                              ###
    puts "Chutes ja feitos: #{chutes}"                                              ###
    puts "Entre com o numero"                                                       ###
    chute = gets.strip                                                              ###
    puts "Será que acertou? Você chutou " + chute + "..."                           ###
    return chute.to_i                                                               ###
end

Veja que você tá tentando acessar a variável chutes sendo que ela não está no escopo da função. Em outras palavras, basta apenas você enviar o parâmetro que indica essa variável e também adicioná-la nos parâmetros da seguinte forma:

chute = solicita_um_chute(tentativas, ultima_tentativa, chutes)
def solicita_um_chute(tentativas, ultima_tentativa, chutes)                                 ###
    puts "\n\n\n\n"                                                                 ###
    puts "Tentativa #{tentativas} de #{ultima_tentativa}"                              ###
    puts "Chutes ja feitos: #{chutes}"                                              ###
    puts "Entre com o numero"                                                       ###
    chute = gets.strip                                                              ###
    puts "Será que acertou? Você chutou " + chute + "..."                           ###
    return chute.to_i                                                               ###
end

Veja que agora além de você mandar a variável você também está recebendo na função. Caso os passos acima estejam confusos dê uma olhada no arquivo completo que editei para você!


#######################################################################################
#######################################################################################
def dar_boas_vindas                                                                 ###
    puts "Bem vindo ao jogo da 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}"                                    ###
end                                                                                 ###
                                                                                    ###
def sorteia_o_numero                                                                ###
    puts "Escolhendo um número secreto entre 0 e 200..."                            ###
    sorteado = 175                                                                  ###
    puts "Escolhido... que tal adivinhar nosso número secreto de hoje?"             ###
    return sorteado                                                                 ###
end                                                                                 ###
                                                                                    ###
def solicita_um_chute(tentativas, ultima_tentativa, chutes)                                 ###
    puts "\n\n\n\n"                                                                 ###
    puts "Tentativa #{tentativas} de #{ultima_tentativa}"                              ###
    puts "Chutes ja feitos: #{chutes}"                                              ###
    puts "Entre com o numero"                                                       ###
    chute = gets.strip                                                              ###
    puts "Será que acertou? Você chutou " + chute + "..."                           ###
    return chute.to_i                                                               ###
end                                                                                 ###
                                                                                    ###
def verifica_resultado(numero_secreto, chute)                                       ###
    acertou = numero_secreto == chute                                               ###
    if acertou                                                                      ###
        puts "Parabéns! Você acertou o número secreto!"                             ###
        return true                                                                 ###
    end                                                                             ###
                                                                                    ###
                                                                                    ###
    maior = numero_secreto > chute                                                  ###
    if maior                                                                        ###
        puts "Que pena, o numero secreto é maior"                                   ###
    else                                                                            ###
        puts "Que pena, o numero secreto é menor"                                   ###
    end                                                                             ###
    return false                                                                    ###
end                                                                                 ###
#######################################################################################
#######################################################################################

dar_boas_vindas
numero_secreto = sorteia_o_numero

tentativas = 1

ultima_tentativa = 10  

chutes = []

for tentativas in 1..ultima_tentativa

    chute = solicita_um_chute(tentativas, ultima_tentativa, chutes)
    chutes[chutes.size] = chute

    if verifica_resultado(numero_secreto, chute)
        break
    end

end

MUITO OBRIGADO