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

Minha função conta, não quer contabilizar os acertos. Não entendo o porquê

Estou tentando implementar essa função, mas não estou fazendo com que ela continua falando que por exemplo a letra "a", não está contida na palavra_secreta.

#ruby 2.4.1 

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}"
  puts "\n\n\n"
  nome
end

def sorteia_palavra_secreta
  puts "Escolhendo a palavra secreta"
  palavra_secreta = "programador"
  puts "Escolhido... sua palavra secreta tem #{palavra_secreta.size} letras, que tal tentarmos adivinhar?"
  puts "\n\n\n\n"
  palavra_secreta
end

def nao_quer_jogar?
  puts "Quer jogar novamente? (S/N)"
  nao_quero_jogar = gets.strip
  nao_quero_jogar.upcase == N
end

def pede_um_chute chutes, erros
    puts "Erros até agora: #{erros}"
    puts "Chutes até agora #{chutes}"
    puts "Escolha uma palavra ou uma letra."
    chute = gets.strip
    puts "Será que acertou? Você chutou #{chute}!"
    chute
end

def conta(palavra_secreta, chute)
    contador = 0
    for letra in palavra_secreta.chars
        if letra == chute
            contador += 1
        end
    end
    contador
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
   #     contador = palavra_secreta.count(chute[0])
       contador = conta chute, palavra_secreta
        if contador == 0
            erros += 1
            puts "Nao existe esta letra na palavra secreta.Você errou!"
        else 
            puts "A letra foi encontrada #{contador} vezes"
        end
    else
        acertou = chute == palavra_secreta
        if acertou
            pontos_ate_agora += 100
            puts "Parabains! Você acertou a palavra secreta."
            break
        else 
            erros += 1
            pontos_ate_agora -= 30
            puts "Você errou!"
        end
    end
  end
  puts "Você ganhou #{pontos_ate_agora} pontos."
end

nome = da_boas_vindas

loop do
  joga nome
  break if nao_quer_jogar?
end

Sei que posso usar o seguinte trecho para a minha funcionalidade, porém gostaria de entender meu erro no anteriormente

contador = palavra_secreta.count(chute[0])

Desde já agradeço

2 respostas
solução!

Oi Otávio, dá uma olhada na definição e na chamada da função conta, mais especificamente na passagem dos parâmetros.

Se continuar com dúvida, avisa aqui que vemos melhor. ;)

Olá, dei uma olhada sim. Acabei entendendo, muito obrigado!