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

Erro na hora da execução do programa

O código que estou tentando compilar em ruby é este

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

def escolhe_palavra_secreta
    puts "Escolhendo uma palavra secreta..."
    palavra_secreta = "programador"
    puts "Palavra secreta com #{palavra_secreta.size} letras... boa sorte!"
    palavra_secreta
end

def não_quer_jogar?
    puts "Deseja jogar novamente? (S/N)"
    quero_jogar = gets.strip
    não_quer_jogar = quero_jogar.upcase == "N"
end


def pede_um_chute(chutes,erros)
    puts "\n\n\n\n"
    puts "Erros até agora: #{erros}"
    puts "Chutes até agora: #{chutes}"
    puts "Entre com uma letra ou com uma palavra"
    chute = get.strip
    puts "Será que acertou? Você chutou #{chute}"
    chute
end

def joga(nome)
    palavra_secreta = escolhe_palavra_secreta

    erros=0
    chutes = []
    pontos_ate_agora =0

    while erros <5
        chute= pede_um_chute
        chutes<<chute

        chutou_uma_letra = chute.size == 1
        if chutou_uma_letra
        else
            acertou = chute == palavra_secreta    
            if acertou
                puts "Parabéns! Acertou"
                pontos_ate_agora += 100
                break
            else
                puts "Que pena... errou!"
                pontos_ate_agora -= 30
                erros +=1
            end    
        end    
    end

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

nome = da_boas_vindas


loop do
    joga nome, chute
    if não_quer_jogar?
        break
    end    
end

e o erro que está dando é este daqui

Traceback (most recent call last):
        2: from forca.rb:67:in `<main>'
        1: from forca.rb:67:in `loop'
forca.rb:68:in `block in <main>': undefined local variable or method `chute' for main:Object (NameError)
2 respostas
solução!

Thiago,

O erro está dizendo que não existe uma variável ou método chamado chute no escopo do loop, na linha 67.

O seu método joga só recebe um único parâmetro que é o nome que você passou. No escopo do loop realmente não existe esta variável chute e ela não é nem necessária. Pode removê-la que seu código vai compilar.

Abraço!

Obrigado. Deu certo!