Olá, já tentei alterar e seguir até o padrão apresentado pelo curso, mas aparentemente está retornando um erro na hora da escolha da palavra secreta:
Escolhendo palavra secreta....
/Users/tarugo/Documents/Programing/Ruby/Forca/ui.rb:14:in `avisa_palavra_escolhida': undefined method `size' for nil:NilClass (NoMethodError)
from /Users/tarugo/Documents/Programing/Ruby/Forca/forca.rb:9:in `sorteia_palavra_secreta'
from /Users/tarugo/Documents/Programing/Ruby/Forca/forca.rb:53:in `joga'
from /Users/tarugo/Documents/Programing/Ruby/Forca/forca.rb:47:in `block in jogo_da_forca'
from /Users/tarugo/Documents/Programing/Ruby/Forca/forca.rb:46:in `loop'
from /Users/tarugo/Documents/Programing/Ruby/Forca/forca.rb:46:in `jogo_da_forca'
from Main.rb:3:in `<main>'
Segue meu código:
require_relative 'ui'
def sorteia_palavra_secreta
avisa_escolhendo_palavra
texto = File.read("Dicionário.txt")
todas_as_palavras = texto.split("\n")
numero_aleatorio = rand(todas_as_palavras.size)
palavra_secreta = todas_as_palavras[numero_aleatorio]
avisa_palavra_escolhida(palavra_secreta)
end
def pede_um_chute_valido(chutes, erros, mascara)
cabeçalho_de_tentativa(chutes, erros, mascara)
loop do
chute = pede_um_chute
if chutes.include? chute
avisa_chute_efetuado(chute)
else
return chute
end
end
end
def palavra_mascarada(palavra_secreta, chutes)
mascara = ""
for letra in palavra_secreta.chars
if chutes.include? letra
mascara << letra
else
mascara << "_"
end
end
mascara
end
def salva_rank(nome, pontos_totais)
conteudo = "#{nome}\n#{pontos_totais}"
File.write "rank.txt", conteudo
end
def jogo_da_forca
nome = boas_vindas
pontos_totais = 0
avisa_pontos_totais(pontos_totais)
salva_rank(nome, pontos_totais)
loop do
pontos_totais += joga(nome)
break if nao_quer_jogar_novamente?
end
end
def joga(nome)
palavra_secreta = sorteia_palavra_secreta
erros = 0
chutes = []
pontos_ate_agora = 0
while erros < 5
mascara = palavra_mascarada(palavra_secreta, chutes)
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_encontrada = palavra_secreta.count letra_procurada
if total_encontrada == 0
avisa_letra_nao_encontrada
erros += 1
else
avisa_letra_encontrada(total_encontrada)
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)
pontos_ate_agora
end
Onde está o erro????