1
resposta

Meu jogo do adivinha não tem o mesmo comportamento do mostrado no exercício, por que?

Olá a todos!

Tenho duas dúvidas, que são.

1 - Meu jogo do adivinha, ao invés de aparecer o resultado a cada vez que eu respondo o "alert", (como acontece com o jogo do professor em vídeo) apenas me dá o resultado ao final das 3 tentativas, aparecendo os 3 resultados consecutivamente. Isso acontece por alguma atualização do navegador?

2 - Ainda não compreendi o motivo do "var chute = parseInt(prompt("Digite seu chute"));" ter de estar dentro do "while". Afinal, se ele é uma váriavel, não bastaria apenas inserir o "if (chute == numeroPensado)" após o while?

Ao não inserir o "var chute = parseInt(prompt("Digite seu chute"));" após o while, o navegador me retornava 3 resultados consecutivos, após apenas uma resposta, alguém saberia me explicar a dinâmica do porquê isso acontece?

<meta charset="UTF-8">

<script>

    function pulaLinha() {
        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("Parabéns você acertou!")
            break;
        } else {
            mostra("Você errou, o número pensado foi " + numeroPensado);
        }
        tentativas++
    }

    </script>
1 resposta

Fala Diego, tudo bem? Vou tentar te ajudar

Vi em outro tópico do fórum que esse erro de repetir o alert e só mostrar o resultado final é algo do Chrome, no Firefox, por exemplo, não acontece. Nesse caso um outro usuário comentou que a lógica deve ser repensada, e concordo. Talvez usando input no HTML e testando pode facilitar, mais para o final deste curso isso é abordado um pouco.

Em relação à variável chute estar dentro do While, o motivo é bem simples. Se você inserir o chute fora do While, o input será 1 só, ou seja, o usuário terá apenas 1 tentativa e o while testará essa mesma tentativa 3x. A ideia é repetir também o "chute" para permitir que o usuário tente n vezes, por isso deve estar dentro do while.

Vou compartilhar o meu código aqui tb, fiz umas estrutura parecida com a sua com algumas diferenças pontuais, se quiser comparar e testar.

Abraços.

<meta charset="UTF-8">

<script>

    function pulaLinha() {

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

    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();

    }

    function sorteia(n) {

        return Math.round(Math.random() * n);

    }

    var n = parseInt(prompt("Informe um número!"));

    var numPensado = sorteia(n);
        //console.log(numPensado);

    var tentativas = 1;
    while(tentativas <= 3) {

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

        if(chute == numPensado) {
            mostra("Você acertou! O número pensado foi: " + numPensado);
            break;

        } else {
            mostra("Você errou!");
            if(chute > numPensado) {
                mostra("O número que você chutou é maior que o sorteado!");
            } else {
                mostra("O número que você chutou é menor que o sorteado!");
            }
        }

        tentativas++;

    }

    mostra("fim");

</script>