Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Falha ao atribuir o retorno de um método a uma váriavel

Criei um método que vai me retornar o nome do meu usuário para que eu possa atribuir a uma variável e utilizar o nome deles em outros pontos do sistema.

Porém ao realizar atribuição, o sistema repete as ações do método.

def inicializacao
    puts "\n\n"
    puts "Bem vindo ao jogo da advinhação!"
    puts "\n\n"
    sleep(1)
    puts "Eu vou escolher um número entre 1 a 20, e você vai ter que adivinhar."
    sleep(1)
    puts "\n"
    puts "Qual é o seu nome?"
    puts "\n"
    nome = gets
    puts "\n"
    sleep(1)
    puts "Começaremos o jogo para você, " + nome
    sleep(1)
    puts "\n"
    nome 
end 

def sorteio 
    numeroinicial = 1
    numerofinal = 20
    puts "Escolhendo..."
    sleep(1.5)
    numerosecreto = rand (numeroinicial...numerofinal)
    sleep(1.0)
    puts "\n"
    puts "Pronto, escolhi! Vamos ver se você consegue advinhar."
    sleep(1.0)
    puts "\n"
    sleep(1.0)
    puts "Você tem 3 tentativas."
    puts "\n"
    sleep(1.5)
    return numerosecreto
end

inicializacao
sorteio

nomedogamer = inicializacao

Alguém entende porquê?

2 respostas
solução!

Olá Jefferson Tudo bem?

Analisando o código que você colocou acredito que o "problema" esteja nestas linhas no fim do código:


inicializacao
sorteio

nomedogamer = inicializacao

Neste caso a primeira vez que a palavra inicializacao aparece ela está invocando a função inicializacao e você invoca ela novamente quando escreve nomedogamer = inicializacao.

Se você remover a primeira chamada ela deve ser chamada apenas uma vez.

Eu recomendaria colocar o sorteio abaixo do inicializacao, para que primeiro seja feita a apresentação e depois entre no jogo de advinhação.

Obrigado cara. Conversando com um colega DEV ele me disse a mesma coisa. Eu achei que essa parte:

nomedogamer = inicializacao

Eu não estava chamando a função novamente, achei que estava só recebendo o valor que ela retorna. Ficou claro obrigado.