1
resposta

[Dúvida] O código gera apenas um número (Aula 2 - Funções com retorno)

Boa tarde! Estou seguindo o código feito na aula, mas, quando clico no botão de chute ele gera apenas 1 número e se clicar novamente no botão, o mesmo número. Caso eu coloque o let numeroSecreto = gerarNumeroAleatorio(); na função function verificarChute() { let numeroSecreto = gerarNumeroAleatorio(); console.log(numeroSecreto); } O código funciona da forma correta. Fiz alguma coisa errada?

let numeroSecreto = gerarNumeroAleatorio();

function exibirTextoNaTela (tag, texto) {
  let campo = document.querySelector (tag);
   campo.innerHTML = texto;
}

exibirTextoNaTela('h1', 'Jogo do número secreto');
exibirTextoNaTela('p', 'Insira um número de 1 a 10');

function verificarChute() {
  console.log(numeroSecreto);
}

function gerarNumeroAleatorio() {
  return parseInt(Math.random() * 10 + 1);
}
1 resposta

Oi, Luiz! Como vai?

O que está acontecendo no seu código é que o número secreto está sendo gerado apenas uma vez, no momento em que essa linha é executada:


let numeroSecreto = gerarNumeroAleatorio();

Ou seja, o valor de numeroSecreto fica fixo. Quando você clica no botão, a função verificarChute() apenas imprime esse mesmo número.

Se você deseja que um novo número seja gerado a cada clique, pode mover a chamada da função gerarNumeroAleatorio() para dentro da função verificarChute(), como você mesmo testou:


function verificarChute() {
  let numeroSecreto = gerarNumeroAleatorio();
  console.log(numeroSecreto);
}

Esse ajuste faz com que um novo número aleatório seja criado toda vez que a função é chamada, ou seja, sempre que o botão for clicado.

Se a sua intenção for manter o mesmo número até que o jogador acerte, o certo é manter a geração fora da função verificarChute() como estava originalmente. A lógica então precisa comparar o chute do jogador com o numeroSecreto, sem recriar o número a cada tentativa.

Veja um exemplo com essa abordagem:


let numeroSecreto = gerarNumeroAleatorio();

function verificarChute(chute) {
  if (chute == numeroSecreto) {
    console.log("Acertou!");
  } else {
    console.log("Tente novamente");
  }
}

function gerarNumeroAleatorio() {
  return parseInt(Math.random() * 10 + 1);
}

Esse exemplo mantém o mesmo número até alguém acertar. Ou seja:

  • numeroSecreto é gerado uma vez.
  • A cada tentativa, o valor do chute é comparado com o número secreto.
  • O número não muda até você resetar ou reiniciar o jogo.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado