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

Reescrevi o código da aula de interrupção de repetição usando o "FOR" mas não funcionou do jeito que eu gostaria

Gostaria que a cada tentativa errada ele mostrasse a mensagem de erro mas ele só mostra após todas as tentativas estarem erradas. Como eu poderia mudar o código?

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    var numeroPensado = Math.round(Math.random() * 10);

    for(tentativas = 1;tentativas <= 3; tentativas++) {

        chute = parseInt(prompt("Digite o seu chute!"));

        if(chute == numeroPensado) {

            mostra("Você acertou! O número pensado foi: " + numeroPensado);
            break;
        } else {

            mostra("Você errou!")
        }
    }

    mostra("FIM");

</script>
2 respostas
solução!

Olá Fábio, tudo bem?

Isso é uma característica do document.write(). Infelizmente ele não é a maneira mais elegante de gerar uma página HTML. Fiquei com a mesma dúvida na época quando estava fazendo o curso que está fazendo agora... fui buscar uma solução e consegui com o código abaixo:

<meta charset="utf-8">

<h1>Jogo de Adivinhação - Alternativa</h1>

<div id="mensagem"></div>

<script>
    function pulaLinha() {
        document.querySelector("#mensagem").innerHTML += "<br>";
    }

    function mostra(texto) {
        document.querySelector("#mensagem").innerHTML += texto;
        pulaLinha();
    }

    function sorteia(numeroLimite) {
        return Math.round(Math.random() * numeroLimite);
    }

    function adivinhaNumero(contador) {
        var chute = parseInt(prompt("Digite seu chute:"), 10);
        var acertou = false;
        if (chute == numeroPensado) {
            mostra("Você ACERTOU! O número pensado era " + numeroPensado);
            acertou = true;
        } else {
            mostra("Você ERROU!");
        }
        contador++;
        if (contador <= tentativas && acertou == false) {
            setTimeout(function() {
                adivinhaNumero(contador)
            });
         } else {
            mostra("FIM");
        }
    }

    var numeroLimite = parseInt(prompt("Digite o número máximo para o sorteio:"), 10);
    var numeroPensado = sorteia(numeroLimite);

    var tentativas = 3;
    var contador = 1;
    adivinhaNumero(contador);
</script>

Dá uma olhada nele e tenta absorver o que ele faz. Hoje já existem formas mais elegantes e eficientes de gerar um HTML, mas para um curso de lógica de programação o uso dessas ferramentas é suficiente.

Abraços e bons estudos!

Obrigado André!