1
resposta

dúvida no código

Quando eu rodo no navegador, respostas aparecem três vezes só no final da condição. Por exemplo, se errar ou acertar, o prompt vai perguntar três vezes mas não vai dizer se a pessoa estar acertando ou errando. Eu fiz o código parecido com o da aula, mas troquei o while por for.

<meta charset="UTF-8">

<script>

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

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

    var numeroPrograma = sorteia(10);

    for (i=1; i<=3; i++){
    var numeroJogador = parseInt(prompt("Digite um número"));

    if (numeroJogador == numeroPrograma) {
        mostra("Parabéns você acertou! O numero é" + numeroPrograma);
        break;

    } else {
            if (numeroJogador > numeroPrograma) {
                mostra("Você errou! Seu numero foi maior que o número pensado.")
            } else {
                mostra("Voce errou! O numero foi menor que o pensado.") 
            }

    }
    }
</script>
1 resposta

Olá Fernanda, beleza?

O que acontece é o seguinte, está tudo certo, porem a função "mostra" tem por definição escrever na tela do navegador a mensagem que foi passada por parâmetro, para isso vc está utilizando a função "document.write()", ela irá fazer exatamente isso, escrever na tela o que for passado para a mesma.

No entanto vc já notou que "só é executado" no final de tudo..

Bem, na verdade não é bem isso. Ele está executando a sua função sempre q vc a chama, inclusive escrevendo no documento assim que chamado, porém não é possível visualizar até acabar a sua rotina do "for" pq ele está te "prendendo no loop". se vc quiser acompanhar tem 2 formas simples, usando o console.log e o alert, veja:

<meta charset="UTF-8">

<script>

    function mostra(frase) {
        console.log(frase);
        alert(frase);
    }

    function sorteia(n) {
        var numeroSorteado = Math.round(Math.random() * n);
        console.log(numeroSorteado);
        return numeroSorteado;
    }

    var numeroPrograma = sorteia(10);

    for (i=1; i<=3; i++){
    var numeroJogador = parseInt(prompt("Digite um número"));

    if (numeroJogador == numeroPrograma) {
        mostra("Parabéns você acertou! O numero é: " + numeroPrograma);
        break;

    } else {
            if (numeroJogador > numeroPrograma) {
                mostra("Você errou! Seu numero foi maior que o número pensado.")
            } else {
                mostra("Voce errou! O numero foi menor que o pensado.") 
            }
    }
    }
</script>

Com esses ajustes, vc pode ver o numeroSorteado no console.log para debugar o seu código e o alerta será exibido sempre ao termino de cada tentativa.