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

19 - Consolidando seu conhecimento

Olá, a partir do que eu aprendi até o momento tentei desenvolver um jogo de adivinhação onde a maquina sorteia um numero de 0 a 10 e o usuario tem que tentar a adivinhar. Então depois de muitos problemas e de tanto quebrar a cabeça conseguir chegar a um resultado. Mas por algum motivo ainda há um erro que eu não consigo resolver, se alguém conseguir resolver eu agradeceria. Obrigado!!

Segue;

<meta charset="UTF-8">
    <h2>*******************************************</h2>
<h1>BEM VINDO AO JOGO!!!</h1>
    <h2>*******************************************</h2>
        <br><br>
<h3>Regras do jogo:</h3>
    Iremos sortear um número de 0 a 10 e você deve tentar adivinhar qual é;<br>
    Insira um número na caixa e click em "Eu acho que o número sorteado é"<br>
    Ps: O número máximo de tentativas são 3!!
        <br>
    <h3>Boa sorte!!</h3>
        <br>

<button>Eu acho que o número sorteado é </button>
<input/>

<script>
    var tentaMax = 10;//pode ignorar isso aqui!!
    var numeroSorteado = Math.round(Math.random() * 10);
    var input = document.querySelector("input");

    input.focus();

    for(var tentativas = 0; tentativas < 3; tentativas++){
        function exibeTxt() {

            if(input.value == numeroSorteado)    {
                alert("Você acertou, muito bem!!!");
                tentativas = 5;
            } else {
                alert("Você errou!!!");
                input.focus();
                if(input.value > numeroSorteado) {
                    alert("Tente novamente!! Ps: " + input.value + " é maior do que o número sorteado!")
                }else{
                    alert("Tente novamente!! Ps: " + input.value + " é menor do que o número sorteado!")
                }
            }
            input.value = "";
        }
        tentativas++;
    }

    var button = document.querySelector("button");
    button.onclick = exibeTxt;
</script>

<br><br><br><br><br><br><br><br><br><br><br><br>
Por FMP!!

O erro aqui é se ele acertar o input.focus é desativado indicando que finalizou, porém mesmo errando 3x ele continua a executar e só é paralisado quando acerta.

1 resposta
solução!

Ao clicar no botão, a função exibeTxt é chamada direto sem passar pelo loop . Ao invés do loop, você pode começar com 3 tentativas e as diminuir quando adivinhar errado. Assim que as tentativas acabarem (tentativas == 0), a página recarrega (location.reload()) e o jogo começa de novo.

Segue o código:

    var tentativas = 3
    function exibeTxt() {

        if(input.value == numeroSorteado)    {
            alert("Você acertou, muito bem!!!");
            location.reload()
            tentativas = 3;
        } else {
            alert("Você errou!!!");
            input.focus();
            if(input.value > numeroSorteado) {
                alert("Tente novamente!! Ps: " + input.value + " é maior do que o número sorteado!")
            }else{
                alert("Tente novamente!! Ps: " + input.value + " é menor do que o número sorteado!")
            }
            --tentativas            
        }

        if (tentativas == 0) {
            alert('Acabaram as chances. Jogue novamente!')
            location.reload()
            tentativas = 3
        }
        input.value = "";
    }