Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

3. Lendo, escrevendo em arquivos e entendendo a pilha de execução

Agora vamos até a linha adequada, ignorando diversas delas:

arquivo = File.new("dicionario", "r")
total_de_palavras = arquivo.gets.to_i
aleatoria = rand(total_de_palavras)
for i = 1..aleatoria
    arquivo.gets
end

Esta fomra acima explicada notexto nao funcionou, por que ? Entretanto esta forma abaixo sim:

def sorteia_palavra_secreta
      avisa_escolhendo_palavra()
      arquivo = File.new("dicionario.txt", "r")
      total_de_palavras = arquivo.gets.to_i
      aleatoria = rand(total_de_palavras)

      for i in 1..aleatoria
       arquivo.gets
      end

      palavra_secreta = arquivo.gets.strip.downcase
      arquivo.close

      #todas_as_palavras = arquivo.split "\n"
      #numero_escolhido = rand(todas_as_palavras.size)
      #palavra_secreta = todas_as_palavras[numero_escolhido]

      avisa_palavra_escolhida(palavra_secreta)
end

E por que percorrer um for para pegar o ultimo dado de gets ? que será minha palavra, por que nao posso apontar como palavra_secreta = arquivo[aleatoria] ?

1 resposta
solução!

Oi Eduardo,

Estava errado no texto o for correto é:

for i in 1..aleatoria -1
  arquivo.gets
end

Você não pode fazer arquivo[aleatoria] pois a variável arquivo é do tipo File e não possui esse método.

Abraço!