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 palavramascarada (chutes, palavra_secreta) mascara = "" for letra in palavra_secreta.chars if chutes.include? letra mascara << letra else mascara << "" end end mascaraend
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 endend
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
Agradeço já a quem puder ajudar.