1
resposta

Ajuda pra por o código funcionar

Meu objetivo era incrementar meu código usando o que foi aprendido até aqui. Porém estou tendo um problema, o qual não consegui achar uma solução.

Meu objetivo era perguntar o número e após a entrada do usuário aparecer a mensagem dizendo se o número sorteado era menor ou maior o que o usuário digitou.

Se eu acerto de primeira ele dá o alert avisando do acerto e imprime na tela qual era o número.

Porém, se eu erro, não está voltando pra digitar no input. Ao invés disso, está aparecendo seguidamente as 3 mensagens iguais no alert, dizendo que número é maior ou menor, e aí então aparece a mensagem dizendo "máximo de tentativas", aí ele imprime qual era o número na tela. Preciso fazer com dê o alert com a pista, e aí volte para o usuário poder digitar o novo chute no input. Alguém consegue me ajudar?

Obrigado.

<meta charset="UTF-8">

<input/>
<button>Qual é o seu palpite?</button>

<script>


    function mostra(frase) {

        document.write(frase);

    }

    function sorteia(n) {

        return Math.round(Math.random() * n);
    }    

    var numeroPensado = sorteia(4);

    var tentativaAtual = 1

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

    function verifica () {


        while(tentativaAtual <= 3){

        if(input.value == numeroPensado) {

        alert("Você acertou!")
        mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
        tentativaAtual = tentativaAtual + 4;

        } else {

        if(input.value > numeroPensado) {

            alert("Você errou! Seu chute é maior que o número pensado! Tente novamente.");
            tentativaAtual++;
            input.value = "";
                input.focus();

        } 
        if (input.value < numeroPensado) {

            alert("Você errou! Seu chute é menor que o número pensado! Tente novamente.");
            tentativaAtual++;
            input.value = "";
                input.focus();

        }
        }
        }

        if(tentativaAtual = 3 && input.value != numeroPensado) {

        alert("Máximo tentativas :(") ;
        mostra("O número que eu havia pensado era " + numeroPensado);

        }
    }   

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

        button.onclick = verifica;

</script>
1 resposta

Boa noite, Josias! Como vai?

Eis que como num passe de mágica, olha eu aqui novamente para te ajudar a encontrar a luz do conhecimento! Está pronto? Então vamos lá!

Nesse caso ( usando input), o código precisa ser um pouco diferente do código anterior onde vc usava o prompt()! Isso acontece pq o input sempre aparece na tela enquanto o promp() precisava aparecer a cada chute errado do usuário e por isso era necessário uma laço de repetição! Sendo assim, nessa situação atual o que está acontecendo é que ao fazer o primeiro chute e errar o seu código fica preso dentro do laço de repetição while no que costumamos chamar de loop infinito! Ou seja, dessa vez, o que vc precisa fazer é pegar o número digitado pelo usuário e verificar apenas uma vez se o chute está correto e mostrar as mensagens de acordo com o caso. De modo que o usuário possa tentar efetuar novos chutes a cada clique no botão!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos!