1
resposta

Bug ao contar tentativas do jogo de adivinhar número secreto

Estou escrevendo o código da atividade 4 da aula 3 do curso de Lógica de programação: mergulhe em programação com JavaScript, mas ao rodar o código e simular algumas tentativas ee está aparecendo um número absurdo de tentativas e eu não estou coneseguindo identificar o porque.

let numeroSecreto = 7;
console.log(numeroSecreto);
let chute;
let tentativas = 1;

//enquanto
while (chute != numeroSecreto) {
  chute = prompt("Escolha um número entre 1 e 10");
  //se chute for igual ao número secreto
  if (chute == numeroSecreto) {
    alert(
      `Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativas`
    );
  } else {
    if (chute > numeroSecreto) {
      alert(`O número secreto é menor que ${chute}`);
    } else {
      alert(`O número secreto é maior que ${chute}`);
    }
    tentativas++;
  }
}

Alguém poderia me ajudar a identificar esse erro e como solucionar? Atenciosamente, Lucas.

1 resposta

Olá, Lucas! Tudo bem?

Pelo que você descreveu, parece que o problema está relacionado ao incremento da variável tentativas. No entanto, olhando para o seu código, tudo parece estar correto em termos de lógica para contar as tentativas.

Uma possível causa para o problema que você está enfrentando pode ser a forma como o prompt está recebendo e comparando os valores. O prompt retorna uma string, e a comparação com o número secreto pode estar causando um comportamento inesperado.

Vamos ajustar o código para garantir que a comparação seja feita corretamente convertendo o valor do chute para um número. Você pode fazer isso usando a função Number().

Aqui está uma versão ajustada do seu código:

alert("Boas vindas ao jogo do número secreto");
let numeroSecreto = 7;
console.log(numeroSecreto);
let chute;
let tentativas = 1;

//enquanto
while (chute != numeroSecreto) {
  chute = Number(prompt("Escolha um número entre 1 e 10"));
  
  //se chute for igual ao número secreto
  if (chute == numeroSecreto) {
    alert(
      `Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativas`
    );
  } else {
    if (chute > numeroSecreto) {
      alert(`O número secreto é menor que ${chute}`);
    } else {
      alert(`O número secreto é maior que ${chute}`);
    }
    tentativas++;
  }
}

Ao usar Number(prompt("Escolha um número entre 1 e 10")), garantimos que o valor de chute seja convertido para um número antes de realizar qualquer comparação.

Espero ter ajudado e bons estudos!

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