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

jogo_adivinha.html - não mostra 'Você errou!' após o erro, somente após todas as tentativas acabarem.

Boa noite, galera. Tudo em paz?

É uma dúvida não tão relevante, mas decidi experimentar o fórum pela primeira vez xD Conferi o meu código com o do Flávio e não achei nenhuma diferença, inclusive cheguei a copiar o código dele depois, mas tive o mesmo resultado.

Após errar a tentativa, não é imprimido na página 'Você errou!', somente após o número de tentativas acabarem, aparece tudo de uma vez.

Será que foi alguma atualização nos navegadores? Conferi no Chrome e no Edge.

Eis o código que eu fiz:


<meta charset="UTF-8">

<script>

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

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

    var chances = 1;

    while(chances<=3){

        var chute = parseInt(prompt("Dê o seu palpite!"));

        if (chute==numeroPensado) {
            mostra("Você acertou! O número pensado era "+numeroPensado+".");
            break;
        } else {
            mostra("Você errou, tente novamente!");
        } 

        chances++;
    }

    mostra("FIM.");

</script>
3 respostas

Boa noite Nivaldo, beleza!?

Cara, está certo! O comando document.write só vai descarregar depois que ele executar o script. Acontece que para este exercício, você teria que usar o comando alert no lugar da function "mostra" (não precisa das funções "mostra" e "pulaLinha" se vc não quiser...).

Ficaria assim:

(...)
        if (chute==numeroPensado) {
           alert("Você acertou! O número pensado era "+numeroPensado+".");
            break;
        } else {
            alert("Você errou, tente novamente!");
        } 

(...)

Espero ter ajudado!

Se sim, por favor, marque o fórum como solucionado para eu receber seu feedback beleza!? :)

Abraços!

Buenas, Carlos!

Realmente, o comando alert resolve a questão.

No entanto, nessa aula o Flávio utiliza o document.write, e conforme ele vai dando os palpites, vai mostrando na página o resultado (dá pra ver a partir dos 03:50).

Por isso fiquei encucado, suspeitando de alguma atualização nos navegadores e até alguma diferença de Mac pra Windows. Pode ser algum dos dois?

Eis o código que ele usou:

<meta charset="UTF-8">

<script>

    function pulaLinha() {

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

    function mostra(frase) {

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

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

var tentativas = 1;

while(tentativas <= 3) {

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

    if(chute == numeroPensado) {

        mostra("Você ACERTOU, o número pensado era " + numeroPensado);
        break;

    } else {

        mostra("Você ERROU!");
    }

    tentativas++;
}

mostra("FIM");
</script>
solução!

Boa tarde Nivaldo!

Você está certo, foi por conta de atualizações do chrome mesmo. Veja que tem inclusive um alerta na transcrição da Aula:

"Atenção: com atualizações, o Google Chrome agora só mostra as mensagens através de document.write() realizadas dentro de um loop, somente quando a página for carregada completamente, isto é, quando o loop termina. Neste caso, para efeito de aprendizagem, utilizem alert() no lugar de document.write()."

Espero que agora tenha esclarecido!

Não esqueça de marcar o fórum como solucionado, assim, recebo seu feedback e seu exemplo fica mais visível para outras pessoas que possam estar com a mesma dificuldade beleza!?

Abraços!