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

Erro lógico. Jogo de adivinhar o número.

No jogo de adivinhação as dicas só aparecem no final da execução. Quado a pessoa chuta um número e erra o código não mostra a dica se o número certo é maior ou menor. Sendo que depois de errar as 3 tentativas é mostrado essas dicas.

function sorteia (){

    var n;
    n = parseInt (prompt ("Digiti o número limite para o sorteio."));
    resposta = Math.round (Math.random () * n);
    return resposta;
}

var numeroPensar = sorteia ();
var tentativas = 1;

while (tentativas <= 3){

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

    if (chute == numeroPensar){

        mostrar ("Muito bem Barney! Você acertou " + numeroPensar);
        break;

     } else {

        if (chute  > numeroPensar) {
        mostrar ("Não foi dessa vez Barney! O numero era menor que o seu chute ! ");

        }         else {
        mostrar ("Não foi dessa vez Barney! O numero era maior que o seu chute ! ");
        }
    }tentativas++;    
}
3 respostas
<meta charset = "UTF-8">

<h1> Adivinhe o número pensado!</h1>

<script>

function pulaLinha(){

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

function mostrar (frase){

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

function sorteia (){

    var n;
    n = parseInt (prompt ("Digiti o número limite para o sorteio."));
    resposta = Math.round (Math.random () * n);
    return resposta;
}

var numeroPensar = sorteia ();
var tentativas = 1;

while (tentativas <= 3){

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

    if (chute == numeroPensar){

        mostrar ("Muito bem Barney! Você acertou " + numeroPensar);
        break;

     } else {

        if (chute  > numeroPensar) {
        mostrar ("Não foi dessa vez Barney! O numero era menor que o seu chute ! ");

        }         else {
        mostrar ("Não foi dessa vez Barney! O numero era maior que o seu chute ! ");
        }
    }tentativas++;    
}
</script>
solução!

Olá Pedro,

aparentemente seu código está certo. Qual navegador você está utilizando? Algumas das últimas versões do Chrome alteraram o comportamento do document.write() e agora o navegador imprime todos os conteúdos na tela só depois de ler todo o <script>, ou seja, depois que o usuário acertou ou errou 3 vezes.

Se você testou mesmo com o Chrome tente abrir o código em outro navegador, como o Firefox, para ver se funciona do jeito que você espera.

Olá Lucas,

Testei pelo firefox e realmente funcionou como o esperado, obrigado pela ajuda!! Eu alterei pelo alert no lugar do document.write () e resolveu pelo chrome.

<meta charset = "UTF-8">

<h1> Adivinhe o número pensado!</h1>

<script>

function pulaLinha(){

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

function mostrar (frase){
    alert(frase);
    //document.write (frase);
    //pulaLinha();
}

function sorteia (){

    var n;
    n = parseInt (prompt ("Digiti o número limite para o sorteio."));
    resposta = Math.round (Math.random () * n);
    return resposta;
}

var numeroPensar = sorteia ();
var tentativas = 1;

while (tentativas <= 3){

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

    if (chute == numeroPensar){        
        mostrar ("Muito bem Barney! Você acertou " + numeroPensar);
        break;
    }
    else {
        if (chute  > numeroPensar) {
            mostrar ("Não foi dessa vez Barney! O numero era menor que o seu chute ! ");
        }         
        else {
            mostrar ("Não foi dessa vez Barney! O numero era maior que o seu chute ! ");
        }
    }
    tentativas++;    
}
</script>