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

syntax error

Boa tarde. No video 4 da segunda aula de Ruby II meu código começou a apresentar este erro: forca.rb:60: syntax error, unexpected end-of-input, expecting keyword_end (SyntaxError)

A linha 60 é ultimo end do seguinte código:

def jogo_da_forca
    nome = da_boas_vindas

    loop do
        joga nome
        if nao_quer_jogar?
            break
        end
    end
end

Segue o código completo:

ui.rb

def avisa_chute_efetuado chute
    puts "Você já chutou #{chute}."
end

def avisa_letra_nao_encontrada
    puts "Letra não encontrada."
end

def avisa_letra_encontrada total_encontrado
    puts "Letra encontrada #{total_encontrado} vezes."
end

def avisa_acertou_palavra
    puts "Parabéns! Acertou!"
end

def avisa_errou_palavra
    puts "Que pena... errou."    
end

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

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

def escolhe_palavra_secreta
    puts "\n\n\n"
    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_quer_jogar? = quero_jogar.upcase == "S"
end

def pede_um_chute chutes, erros
    puts "\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? Você chutou #{chute}"
    chute
end

forca.rb

require_relative 'ui'

def pede_um_chute_valido chutes, erros
    loop do
    chute = pede_um_chute chutes, erros
    if chutes.include? chute
        avisa_chute_evetuado chute
    else
        return chute
    end
end

def joga nome
    palavra_secreta = escolhe_palavra_secreta

    erros = 0
    chutes = []
    pontos_ate_agora = 0

    while erros < 5
        chute = pede_um_chute_valido chutes, erros
        chutes << chute

        chutou_uma_letra = chute.size == 1
        if chutou_uma_letra
            letra_procurada = chute [0]
            total_encontrado = palavra_secreta.count letra_procurada
            if total_encontrado == 0
                avisa_letra_nao_encontrada
                erros += 1
            else
                avisa_letra_encontrada total_encontrado
            end
        else
            acertou = chute == palavra_secreta
            if acertou
                avisa_acertou_palavra
                pontos_ate_agora += 100
                break
            else
                avisa_errou_palavra
                pontos_ate_agora -= 30
                erros +=1
            end
        end
    end

    avisa_pontos pontos_ate_agora
end

def jogo_da_forca
    nome = da_boas_vindas

    loop do
        joga nome
        if nao_quer_jogar?
            break
        end
    end
end

main.rb

require_relative 'forca'

jogo_da_forca

Já tentei várias formas de resolver e não consegui. Quem puder ajudar agradeço!

2 respostas
solução!

Maurilio ta faltando um end no teu codigo.

def jogo_da_forca
    nome = da_boas_vindas

    loop do
        joga nome
        if nao_quer_jogar?
            break
        end
    end
end
end

Problema resolvido! Obrigado Vânia!