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

O meu script não está se comportando como o script do professor!

a frase "Você errou" aparece somente após as 3 tentativas. Já o código do professor aparece a cada momento que ele erra o número. O que eu fiz de errado?

<meta charset="UTF-8">

<script>

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

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

    }
    function sorteio(n){
        return Math.round(Math.random()* n)
    }
    var numeroPensado = sorteio(10);
    var tentativas = 1;
    //console.log(numeroPensado);
    while(tentativas <=3){

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

        if(chute == numeroPensado){

            mostra("Você acertou!")
            break;

        } else{

            mostra("você errou!"); // <--- essa frase só aparece após encerrar todas as tentativas!
        }

        tentativas++;

    }
    mostra ("o numero era " + numeroPensado);        

</script>
5 respostas
solução!

O erro se encontra nessa parte do código:

mostra ("o numero era " + numeroPensado);

Esta linha do seu código não esta dentro do while, então ela só será mostrada após sair da função while e por isso só vai aparecer uma vez.

Para consertar é só colocar dentro do else após mostra("você errou");

else {
    mostra("você errou!");
    mostra("o numero era " + numeroPensado); 
}

Na aula, toda vez que o professor erra o "numero pensado" a função mostra imprime na tela dele e no meu código isso não funciona. Se eu errar, a função "mostra " só aparece após todas as 3 tentativas.

else{

            mostra("você errou!");
        }

Oi Matheus, boa tarde.

Não está aparecendo igual ao do professor por causa de atualizações do Chrome. No Firefox ainda aparece igual a aula.

Eles colocaram um aviso no início da parte de transcrição:

" 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()."

Imaginei que fosse alguma atualização, obrigado Rafael! Código corrigido para funcionar de maneira mais didática no Chrome, única coisa é que estou usando o for.

for(var i=0;i<3;i++){

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

if(chute == numeroPensado){
    mostra("Você acertou!");
    break;
} else {
    if(chute>numeroPensado){
        alert("Você errou! Seu número é maior que o número pensado!");
    } else {
        alert("Você errou! Seu número é menor que o número pensado!");
    }
    alert("Restam "+(2-i)+" tentativas!");
    if(i == 2){
        mostra("Você excedeu o número de tentativas!");
    }
}

}

Obrigado pela Info!!!