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

Mensagem de Erro só aparece no final das tentativas

Tentei refazer o jogo usando o for porém a mensagem "Você errou, tente novamente" só aparece ao final das 3 tentativas. Poderiam me ajudar a encontrar a razão para isso acontecer?

<meta charset="utf-8">
<script type="text/javascript">

function pulalinha() {
    document.write("<br><br>");

}

function mostra(frase){
    document.write("<big>"+frase+"</big>");
    pulalinha();
}

var numeroPensado = 4;

    for(var tentativa = 1; tentativa <=3; tentativa++){

        var chute = parseInt(prompt("Digite seu chute"));

        if(chute == numeroPensado){

            mostra("Você acertou!");
            break;

        }     else {

        mostra("Você errou, tente novamente");

        }
    }


</script>
2 respostas
solução!

Olá, Paula! Tudo bem contigo?

Isso é um comportamento dos navegadores, pois enquanto o código está na execução do for, ele espera acabar para que possa "printar" o resultado.

Se testarmos no Firefox você verá que ao fundo ele vai imprimindo enquanto o for é executado. São comportamentos diferenças entre o Chrome e Firefox.

Para resolvermos, optei por alterar o mostraapós o elsepor um alert

        } else {

            alert("Você errou, tente novamente");

        }

Toda as vezes em que errar, vai gerar um pop-up indicando que errou.

No fim, coloquei mais um ifpara comparar se todas as tentativas forem usadas, termine o jogo com uma mensagem

        if(tentativa == 3) {
            mostra("Suas tentativas acabaram")
        }

O código completo ficaria assim

<meta charset="utf-8">
<script type="text/javascript">

    function pulalinha() {
        document.write("<br><br>");

    }

    function mostra(frase) {
        document.write("<big>" + frase + "</big>");
        pulalinha();
    }

    var numeroPensado = 4;

    for (var tentativa = 1; tentativa <= 3; tentativa++) {

        var chute = parseInt(prompt("Digite seu chute"));

        if (chute == numeroPensado) {

            mostra("Você acertou!");
            break;

        } else {

            alert("Você errou, tente novamente");

        }
        if(tentativa == 3) {
            mostra("Suas tentativas acabaram")
        }
    }


</script>

Espero ter ajudado, Paula!

Um abraço e bons estudos!

Eu pensei na possibilidade de usar o alert mas achei que meu código estava apresentando erro mesmo, não imaginei que pudesse ser navegador rs Muito obrigada pela ajuda Cassio!