Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Código do adivinha_mais

Olá, pessoal! Decidi implementar um pouco mais no código passado no curso, porém quando você erra, ele roda suas três tentativas de primeira. Onde eu posso ter errado?

<meta charset="UTF-8">

<input/>

<button>Adivinhe o número secreto (digite um número de 1 a 10)</button>

<script>

var segredo = Math.round(Math.random() * 10);
var input = document.querySelector("input");
input.focus;
var tentativas = 1;
var resta = 3;

function verifica() {

while (tentativas <= 3) {

if(input.value == segredo) {

    document.write("Você acertou!");
    break;
}
else if(segredo < input.value) {

    document.write("Você errou! O número secreto é maior que esse!" + "<br>" + "Ainda lhe restam " + resta + " tentativas!");
}
else if(segredo > input.value) {

document.write("Você errou! O número secreto é menor que esse!" + "<br>" + "Ainda lhe restam " + resta + " tentativas!");
}
input.value = "";
input.focus();
tentativas++;
resta = resta - 1;
}
}
var button = document.querySelector("button");
button.onclick = verifica;
</script>

Obrigado!

1 resposta
solução!

Olá, Fillipe, tudo bem?

Nos desculpe a demora a responder.

O problema é que você está utilizando um while dentro da função verifica(), que é chamada quando você clica no botão. Na verdade, você quer fazer apenas uma única verificação para cada vez que o botão for clicado. Ou seja, inicialmente basta trocar o while (tentativas <= 3) por if (tentativas <= 3).

Mas ao fazer isso, você também deve remover o comando break; que está nessa parte do código:

      if (input.value == segredo) {

        document.write("Você acertou!");
        break;
      }

E por fim, você não deve mais utilizar o comando document.write(), senão o documento inteiro será sobrescrito. Você pode trocá-lo pelo comando alert().

Sua função verifica() ficará assim:

  function verifica() {

    if (tentativas <= 3) {

      if (input.value == segredo) {

        alert("Você acertou!");
      }
      else if (segredo < input.value) {

        alert("Você errou! O número secreto é maior que esse!" + "<br>" + "Ainda lhe restam " + resta + " tentativas!");
      }
      else if (segredo > input.value) {

        alert("Você errou! O número secreto é menor que esse!" + "<br>" + "Ainda lhe restam " + resta + " tentativas!");
      }
      input.value = "";
      input.focus();
      tentativas++;
      resta = resta - 1;
    }
  }

Espero ter ajudado! Abraços e bons estudos :)

Caso esta resposta tenha resolvido sua dúvida, por favor, marque como solucionada ✓. Bons Estudos!