Olá, estou com um problema no loop na função jogo_da_forca
já refatorei algumas vezes tentando alterar alguns detalhes, mas o erro ainda persiste, mesmo que o código seja o mesmo do vídeo.
O problema, no terminal, é demonstrado nas duas primeiras linhas (ao invocar o loop do) e também demonstra um erro no arquivo main, ao invocar o jogo.
OBS: Isso tudo ocorre após colocar o nome do jogador
ARQUIVOS:
Forca.rb:
require_relative 'ui'
def palavra_mascarada (chutes, palavra_secreta)
mascara = ""
for letra in palavra_secreta.chars
if chutes.include? letra
mascara << letra
else
mascara << "_"
end
end
mascara
end
def pede_um_chute_valido (chutes, erros, mascara)
cabeçalho_de_tentativas chutes, erros, mascara
loop do
chute = pede_um_chute chutes, erros
if chutes.include? chute
avisa_chute_efetuado chute
else
return chute
end
end
end
def joga (nome)
palavra_secreta = escolhe_palavra_secreta
erros = 0
chutes = []
pontos_ate_agora = 0
while erros < 5
mascara = palavra_mascarada chutes palavra_secreta
chute = pede_um_chute_valido chutes, erros, mascara
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 endend
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 "\n\n\n\n\n\n\n"
puts "Começaremos o jogo para você #{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_quer_jogar = quero_jogar.upcase == "N"
end
def cabeçalho_de_tentativas (chutes, erros, mascara)
puts "\n\n\n\n"
puts "Palavra secreta: #{mascara}"
puts"Erros até agora: #{erros}"
puts "Chutes até agora: #{chutes}"
end
def pede_um_chute
puts "Entre com uma letra ou uma palavra"
chute = gets.strip
puts "Será que acertou? Você chutou #{chute}"
chute
end
main.rb:
require_relative 'Forca'
jogo_da_forca