3
respostas

Lógica função conta

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

def escolhe_palavra_secreta puts "Escolhendo uma palavra secreta..." puts"\n" 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 "\n" puts "Entre com uma letra ou uma palavra:" chute = gets.strip puts "\n" puts "Será que acertou? Você chutou: #{chute}" chute end

def conta(texto, letra) total_encontrado = 0 for i in 0..(texto.size-1) if texto[i] == letra total_encontrado += 1 end end total_encontrado end

def joga(nome) palavra_secreta = escolhe_palavra_secreta

erros = 0
chutes = []
pontos_ate_agora = 0

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

    chutou_uma_letra = chute.size == 1
    if chutou_uma_letra
        letra_procurada = chute[0]
        total_encontrado = conta palavra_secreta, letra_procurada
        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
            erros += 1
        end
    end

end

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

end

nome = da_boas_vindas

loop do joga nome if nao_quer_jogar? break end end

Tenho a seguinte dúvida: Nesse trecho (total_encontrado = conta palavra_secreta, letra_procurada), pelo meu entendimento, são passados como parâmetros palavra_secreta e letra_procurada, porém a função conta (def conta) tem como parâmetros texto e letra. Os parâmetros não devem ser os mesmos, já que são a mesma função? Obrigado.

3 respostas

Olá Leonardo,

Você está falando do nome das variáveis correto?

Nesse caso não importa o nome quando você executa a função, o que você passa para a função são os valores. Nesse exemplo o primeiro valor que passar para a função vai ser salvo em texto dentro da função, e o segundo valor vai ser salvo em letra

Assim você pode até passar um valor diretamente:

# Passando um valor diretamente
total_encontrado = conta('lucas', 'a')

# Passando um valor por variável
nome = 'lucas'
total_encontrado = conta(nome, 'a')

# Passando todos os valores por variável
palavra = 'lucas'
letra_para_buscar = 'a'
total_encontrado = conta(palavra, letra_para_buscar)

Espero ter ajudado, qualquer dúvida é só falar!

Agradeço pela resposta, agora ficou claro.

Sem problemas! Se não tiver mais dúvidas marca o tópico como solucionado para encerrar, e qualquer coisa é só iniciar um novo tópico.