Não sei pq, mas a primeira vez que roda o jogo da forca, quando acerto a palavra o break só quebra o "while erros < 5" e começa a "def joga(nome)" d novo, e ai na segunda vez que acerto a palavra o break quebra a "def joga(nome)" e ai fica normal pergunta se eu quero jogar de novo e tudo mais, só não sei pq na primeira vez o break não faz isso.
Meu codigo
require_relative 'uiforca'
def salva_rank nome, pontos_totais
conteudo = "#{nome}\n#{pontos_totais}"
File.write "rank.txt", conteudo
end
def le_rank
conteudo = File.read "rank.txt"
conteudo.split "\n"
end
def escolhe_palavra
avisa_escolhendo_palavra_secreta
texto = File.read("dicionario.txt")
todas_as_palavras = texto.split "\n"
numero_escolhido = rand(todas_as_palavras.size)
palavra_desafio = todas_as_palavras[numero_escolhido].downcase
avisa_palavra_secreta_escolhida palavra_desafio
end
def palavra_mascarada chutes, palavra_desafio
mascara = ""
for letra in palavra_desafio.chars
if chutes.include? letra
mascara << letra
else
mascara << "_"
end
end
mascara
end
def pede_chute_valido chutes, erros, contador, mascara
cabecalho_de_tentativa chutes, erros, contador, mascara
loop do
chute = pede_um_chute
if chutes.include? chute
avisa_chute_efetuado chute
else
return chute
end
end
end
def joga(nome)
palavra_desafio = escolhe_palavra
contador = 0
erros = 0
chutes = []
pontos_ate_agora = 0
while erros < 5
mascara = palavra_mascarada chutes, palavra_desafio
chute = pede_chute_valido chutes, erros, contador, mascara
chutes << chute
nao_jogar_mais = chute == "sair"
if nao_jogar_mais
break
end
chutou_uma_letra = chute.size == 1
if chutou_uma_letra
letra_procurada = chute[0]
total_encontrado = palavra_desafio.count letra_procurada
if total_encontrado == 0
avisa_letra_nao_encontrada
erros += 1
else
avisa_letra_encontrada total_encontrado
end
else
acertou = chute == palavra_desafio
if acertou
avisa_acertou_palavra
pontos_ate_agora += 100
break
else
avisa_errou_palavra
pontos_ate_agora -= 30
erros += 1
end
end
contador += 1
avisa_pontos_ate_agora pontos_ate_agora
end
pontos_ate_agora
end
def jogo_da_forca
nome = da_boas_vindas
pontos_totais = 0
avisa_campeao_atual le_rank
loop do
joga nome
pontos_totais += joga nome
avisa_pontos_totais pontos_totais
if le_rank[1].to_i < pontos_totais
salva_rank nome, pontos_totais
end
if nao_quer_jogar?
break
end
end
end