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

Como Resolver Problema do WHILE

Seguinte galera, estou tentando fazer um joguinho de advinhação entre dois amigos , no qual um vai digitar um numero de 0 a 10 no prompt e o outro vai ter que digitar no input e ele terá 3 tentativas, caso erre as tres apareça a mensagem ACABOU SUAS CHANCES, caso ele acerte o programa sai do Loop e assim por diante, só que no meu codigo se eu acerto o numero que meu amigo digitou, ele funciona normal e finaliza o loop mas se eu erro ele começa a aparecer o alert tente mais uma vez durante 3x e nem se da o trabalho de eu tentar novamente, segue o codigo...

<meta charset="UTF-8">
<input><button> Compare com o meu segredo</button>


<script>

  alert("VAMOS JOGAR UM JOGO ? LEMBRE-SE VOCE TERÁ 3 CHANCES DE ACERTAR UM NUMERO DE 0 A 10")
  var segredo = parseInt(prompt("PEÇA PARA UM AMIGO DIGITAR UM NUMERO DE 0 A 10:"));

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

  function verifica() {
    var contador = 1;
    var limite = 3;

    while (contador <= limite) {
      if (input.value == segredo) {
        alert("Voce Acertou !");
        break;

      } else {
        if (contador == 3) {
          alert("ACABOU SUAS CHANCES,VOCE PERDEU");
          break;
        } alert("Voce errou, tente novamente");
      }
      contador++;

    }


  }
  var button = document.querySelector("button");
  button.onclick = verifica;



</script>

Eu tenho quase certeza que meu erro está nesse ultimo else ... quem puder dá um help EU AGRADEÇO :D

3 respostas
solução!

Quando você clica no botão 'verifica' e chama a função:

  • ela vai iniciar os valores das variáveis
  • Ela vai executar o while se contador <= limite
    • Dentro do while não tem nenhum comando para 'esperar' a pessoa digitar outro numero
    • o while verifica o valor atual do input e executa as 3 vezes sem aguardar nada.

Talvez até dê para manter o while usando algum evento como onchange, wait, ou algo mais complexo que creio não ser a melhor solução para o problema.

O que recomendo é que junto da variável segredo você já iniciar a variável contador. E, sem o while, a cada clique em 'verifica' o contador era aumentado.

mais ou menos assim:

  //...
  var contador = 1;
  //...
  function verifica() {
     var limite = 3;

    if (input.value == segredo) {
        alert("Voce Acertou !");
      } else {
        //...      
      contador++;

    }

Haaa Saquei !! Para mim funcionou do jeito abaixo, eu tirei do while como você aconselhou e coloquei tudo sobre uma condição IF porque eu preciso dessa condição para que as tentativas funcionem, e deu certo !! Acabei ainda implementando algumas coisas a mais só pra ficar certinho e funcionou muito bem , muito obrigado pela ajuda :D, se tiver alguma dica ,fica a vontade !!

<meta charset="UTF-8">
<input><button> Compare com o meu segredo</button>


<script>

  alert("VAMOS JOGAR UM JOGO ? LEMBRE-SE VOCE TERÁ 3 CHANCES DE ACERTAR UM NUMERO DE 0 A 10");
  var segredo = parseInt(prompt("PEÇA PARA UM AMIGO DIGITAR UM NUMERO DE 0 A 10:"));
  var contador = 1;
  var input = document.querySelector("input");

  function verifica() {
    var limite = 3;
    if (contador <= limite) {
      if (input.value == segredo) {
        alert("Voce Acertou !");
        input.value = "";
        window.location.reload();
      } else if (contador <= 2) {
        alert("TENTE NOVAMENTE");
        input.value = "";
      } else if (contador == limite) {
        alert("VOCÊ PERDEU TODAS AS CHANCES ");
        window.location.reload();
        input.value = "";
      }
    }
    contador++;
  }

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



</script>

Show!!! Bons estudos :)