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

problemas ao executar

boa tarde! estou tendo problemas ao executar o codigo. primeiro ele roda e pergunta o nome, depois que eu respondo da uma mensagem de erro " rb undefined local variable or method "sortei_palavra_secreta" foir main Object"

agradeço desde ja a ajuda

def da_boas_vindas
    puts "Bem vindo ao jogo forca"
    puts "Qual o seu nome?"
    nome = gets.strip
    puts "\n\n\n\n"
    puts "Começaremos o jogo pra foce #{nome}."
    nome
end

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

def nao_quer_jogar?
    puts "Deseja jogar novamento? (S/N)"
    quero_jogar = gets.strip
    nao_quero_jogar = quero_jogar.upcase == "N"
end

def joga(nome)
    palavra_secreta = sorteia_palavra_secreta

    erros = 0
    chutes = []
    pontos_ate_agora = 0

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

        chutou_uma_unica_letra = chute.size == 1
        if chutou_uma_unica_letra
            total_encontrado = 0


            def conta(texto, caracter)
    total_encontrado = 0

        for letra in texto.chars
            if letra == caracter
                total_encontrado += 1
            end
        end

        total_encontrado
    end

    for i in 0..(palavra_secreta.size - 1)
                letra = palavra_secreta[i]
                if letra == chute
                    total_encontrado += 1
                end
            end

            if total_encontrado == 0
                puts "Letra não encontrada!"
                erros += 1
            else
                puts "Letra encontrada #{total_encontrado} vezes!"
            end
        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
            end
        end

    end

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


nome = da_boas_vindas
palavra_secreta = sorteia_palavra_secreta

loop do
    joga nome
    break if nao_quer_jogar?
end
4 respostas
solução!

Oi Gustavo,

O erro

rb undefined local variable or method "sorteia_palavra_secreta" foir main Object

significa que em nenhum lugar do código tem a definição da função sorteia_palavra_secreta ou a atribuição de um valor para uma variável com o nome sorteia_palavra_secreta.

De fato, no código que você mandou acima (não sei se está faltando parte), não tem em nenhum lugar a definição da função sorteia_palavra_secreta. Pelo curso, a função seria mais ou menos assim:

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

Essa definição acima tá no seu código?

Tava mas eu acabei fazendo confusão com o nome das def. Muito obrigado! agora eu to tendo outro probleminha, o jogo abre e roda normal mas o contador de erros dele nao está aumentando, por exemplo, quando eu ja to no terceiro chute o contador de erros ainda está como zero? e o acumulador ta ali certinho no laço for.. nao entendi

Oi Gustavo, perdão pela demora!

Como é uma nova dúvida, você poderia abrir uma nova pergunta no fórum? Aí facilita pra quem estiver com a mesma dúvida a encontrar a solução mais rapidamente. :)

Boa tarde Ana! Eu consegui resolver aqui, brigado de qualquer forma. Abs