Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Variavel chute não está retornando

Eu não consigo entender no meu código, que está igual ao do Professor, o porque ele não consegue rodar tudo certo. No console dá o seguinte erro:

Bem vindo ao jogo da forca
Qual é o seu nome?
Murilo




Começaremos o jogo, Murilo...
Escolhendo uma palavra secreta
Palavra secreta com 11 letras... Boa Sorte!!!!




Erros até agora: 0
Chutes até agora: []
Entre com uma letra ou uma palavra
a
Será que acertou? Voce chutou a
forca.rb:42:in `joga': undefined local variable or method `chute' for main:Object (NameError)
Did you mean?  chutes
        from forca.rb:65:in `block in <main>'
        from forca.rb:64:in `loop'
        from forca.rb:64:in `<main>'

E o meu código está assim:

def 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, #{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 nao_quer_jogar
    puts "Deseja jogar novamente? (S/N)"
    quero_jogar = gets.strip
    nao_quero_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 uma palavra"
    chute = gets.strip
    puts "Será que acertou? Voce chutou #{chute}"
    chute
end

def joga nome
    palavra_secreta = escolhe_palavra_secreta

    erros = 0
    chutes = []
    pontos_ate_agora = 0

    while erros < 5
        chutes = pede_um_chute chutes, erros
        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 = boas_vindas

loop do
    joga nome
    break if nao_quero_jogar        
end
1 resposta
solução!

Oi Murilo,

Parece que na primeira linha do while você escreveu chutes no lugar de chute.

A linha

chutes = pede_um_chute chutes, erros

Deveria ser

chute = pede_um_chute chutes, erros