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

Erros no código

Por que meu código está com um loop infinito?

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>

function sorteia() {
 return Math.round(Math.random() * 10); 
}
function sorteiaNumeros(quantidade) {

 var segredos = [];
 var numero = 1;

 while(numero <= quantidade) {

  var numeroAleatorio = sorteia();
  var achou = false;

  if(numeroAleatorio !== 0) {

  for (var posicao = 0; posicao < segredos.length; posicao++) {

    if(numeroAleatorio == segredos[posicao]) {
      achou = true;
      break;
}
}
    if(achou = false) {
      segredos.push(numeroAleatorio);
numero++;
}

}
}
return segredos;
}
var segredos = sorteiaNumeros(3);


var input = document.querySelector("input");
input.focus();

function verifica() {

   var achou = false;

   for(var posicao = 0; posicao < segredos.length; posicao++) {

   if (input.value == segredos[posicao]) {

   alert("VOCÊ ACERTOU!");
   achou = true;
   break;
}
}
   if(achou == false) {

    alert("Você ERROU");
}

   input.value = "";
   input.focus();
}


var button = document.querySelector("button");


button.onclick = verifica;

</script>
2 respostas
solução!

Olá! O seu código tem que ajustar 2 pontos.

1-

 while(numero <= quantidade) {

  var numeroAleatorio = sorteia();
var achou = false;
  if(numeroAleatorio !== 0) {

A linha

var achou = false;

deverá estar dentro do

if(numeroAleatorio !== 0) {

e não fora.

Correto:

 while(numero <= quantidade) {

  var numeroAleatorio = sorteia();

  if(numeroAleatorio !== 0) {
    var achou = false;

2-

    if(numeroAleatorio !== 0) {
    var achou = false;
    for (var posicao = 0; posicao < segredos.length; posicao++) {

      if(numeroAleatorio == segredos[posicao]) {
        achou = true;
        break;
      }
    }
        if(achou = false) {
          segredos.push(numeroAleatorio);
          numero++;
        }

    }

A linha

if(achou = false) { 

está incorreta. O correto é

if(achou == false) {

Correto:

    if(numeroAleatorio !== 0) {
    var achou = false;
    for (var posicao = 0; posicao < segredos.length; posicao++) {

      if(numeroAleatorio == segredos[posicao]) {
        achou = true;
        break;
      }
    }
        if(achou == false) {
          segredos.push(numeroAleatorio);
          numero++;
        }

    }

Código completo com as correções:

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>

function sorteia() {
 return Math.round(Math.random() * 10); 
}
function sorteiaNumeros(quantidade) {

 var segredos = [];
 var numero = 1;

 while(numero <= quantidade) {

  var numeroAleatorio = sorteia();


  if(numeroAleatorio !== 0) {
var achou = false;
  for (var posicao = 0; posicao < segredos.length; posicao++) {

    if(numeroAleatorio == segredos[posicao]) {
      achou = true;
      break;
}
}
    if(achou == false) {
      segredos.push(numeroAleatorio);
numero++;
}

}
}
return segredos;
}
var segredos = sorteiaNumeros(3);


var input = document.querySelector("input");
input.focus();

function verifica() {

   var achou = false;

   for(var posicao = 0; posicao < segredos.length; posicao++) {

   if (input.value == segredos[posicao]) {

   alert("VOCÊ ACERTOU!");
   achou = true;
   break;
}
}
   if(achou == false) {

    alert("Você ERROU");
}

   input.value = "";
   input.focus();
}


var button = document.querySelector("button");


button.onclick = verifica;

</script>

Super obg!!