Olá, Vinícius!
Vamos juntos resolver esse mistério do loop infinito!
Entendendo o problema:
O seu código está entrando em um loop infinito porque a variável chute
não está sendo inicializada dentro do loop. Isso significa que ela sempre terá o valor undefined
, e a condição while (chute != numeroSecreto)
sempre será verdadeira, fazendo com que o loop continue indefinidamente.
Por que isso acontece?
Variável chute
indefinida: A variável chute
é declarada, mas não recebe um valor inicial dentro do loop. Sem um valor definido, ela sempre será diferente do numeroSecreto
.
Falta de atualização: O valor de chute
não é atualizado dentro do loop, ou seja, o jogador não tem a oportunidade de digitar um novo número a cada tentativa.
Como resolver:
Para corrigir esse problema, precisamos:
Inicializar a variável chute
dentro do loop: Isso permitirá que o jogador digite um novo valor a cada tentativa.
Utilizar o valor digitado: O valor digitado pelo usuário deve ser atribuído à variável chute
para que a comparação com o numeroSecreto
seja feita corretamente.
Veja o código abaixo:
alert('Boas vindas ao jogo do número secreto, o seu objetivo é adivinhar o numero secreto');
let numeroSecreto = 10;
console.log(numeroSecreto);
let chute;
while (true) { // Loop infinito (será interrompido pelo break)
chute = parseInt(prompt("Digite um número:"));
if (chute == numeroSecreto) {
alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto}`);
break; // Interrompe o loop quando o chute for correto
} else {
if (chute > numeroSecreto) {
alert(`O número secreto é menor que ${chute}`);
} else {
alert(`O número secreto é maior que ${chute}`);
}
}
}
Explicando as mudanças:
Inicialização dentro do loop: A variável chute
agora é inicializada dentro do loop while
, permitindo que o usuário digite um novo valor a cada tentativa.
Loop infinito: Utilizamos um loop while (true)
para criar um loop infinito. O break
dentro do if
será usado para interromper o loop quando o número secreto for adivinhado.
Comparação: A condição chute == numeroSecreto
verifica se o valor digitado pelo usuário é igual ao número secreto.
Com essas modificações, seu código estará funcionando corretamente e o loop infinito será corrigido.
Espero ter ajudado.