2
respostas

Limite de tentativas não funciona

<meta charset="UTF-8">
<h1> Jogo da Adivinhação</h1>
<hr>
<h2> Tente acertar qual número estou pensando de 1 a 10</h2>
<p>
    Te dou 3 chances
</p>
<br>
<!-- abre um campo de entrada de dados --> 
<input/>
<!-- abre um campo de entrada de dados --> 

<!-- cria um botao com a mensagem escrita-->
<button>Descubra se você acertou</button>
<!-- cria um botao com a mensagem escrita-->

<script>
    var segredo = Math.round(Math.random()*10);


                            //seleciona uma tag do html transformando ela numa varíavel pra ser usada no JS       
    var entrada = document.querySelector("input");
    entrada.focus();

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

    var tentativas = 1

    function verifica() {
        if (entrada.value == segredo) {

            alert("Você acertou! Era " + segredo);

        } else {
            if (entrada.value < segredo) {

            alert("Você errou! Mais pra cima");

            } else {

                alert("Você errou! Mais pra baixo")

            }

        }
        entrada.value = "";
    }

    while (tentativas <= 3) {
        botao.onclick = verifica;
        tentativas ++
    }

</script>

Eu tentei anular o funcionamento do botão ao passar o número de tentativas, já que se pusesse o while na função, o número de tentativas voltaria pra 1 toda vez que apertasse o botão, mas também parece não estar dando certo e a pessoa segue conseguindo fazer tentativas infinitas. Então, se não é na função, nem no botão, onde exatamente eu encaixo o limite de tentativas????

2 respostas

Oi, Robson! Tudo bem?

Fiz uma pequena alteração no seu código para implementar o limite de tentativas:

<meta charset="UTF-8">
<h1> Jogo da Adivinhação</h1>
<hr>
<h2> Tente acertar qual número estou pensando de 1 a 10</h2>
<p>
    Te dou 3 chances
</p>
<br>
<!-- abre um campo de entrada de dados --> 
<input/>
<!-- abre um campo de entrada de dados --> 

<!-- cria um botao com a mensagem escrita-->
<button>Descubra se você acertou</button>
<!-- cria um botao com a mensagem escrita-->

<script>
    var segredo = Math.round(Math.random()*10);
    console.log(segredo)

    //seleciona uma tag do html transformando ela numa varíavel pra ser usada no JS       
    var entrada = document.querySelector("input");
    entrada.focus();

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

    var tentativas = 1

    function verifica() {

        if (tentativas <= 3) {

            if (entrada.value == segredo) {

                alert("Você acertou! Era " + segredo);

            } else {

                tentativas++;

                if (entrada.value < segredo) {

                    alert("Você errou! Mais pra cima");

                } else {

                    alert("Você errou! Mais pra baixo")

                }
            }

            entrada.value = "";

        } else {

            alert("Suas tentativas acabaram. Atualize a página.");

        }
    }

    botao.onclick = verifica;

</script>

Repare que coloquei o conteúdo da função verifica() dentro de uma condição: se o número de tentativas for menor ou igual a 3, ela funciona como antes; se não, exibe a mensagem "Suas tentativas acabaram. Atualize a página." O incremento de tentativas é feito sempre que o usuário erra um chute.

Abraço!

Verdade! Muito obrigado!