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

Código de repetição, jogo_adivinha

Eu estava incrementando o código do jogo_ adivinha, mas não conseguia fazer aparecer, entre as tentativas erradas, mas mensagens de erro, só quando eu acertava ou erravas as 3 vezes. Onde está o erro?

meta charset="utf-8">
    <script>
        function pularLinha(){
            document.write("<br><br><br>");
        }

        function mostra(frase){
            document.write(frase);
            pularLinha();
        }
        function sorteia(n){
            return Math.round(Math.random() * 10)
        }

        var numeroPensado = sorteia(10);

        var tentativas = 1;

        while(tentativas <= 3){
            var chute = parseInt(prompt("Advinhe um numero de 0 a 10"));
            if(chute == numeroPensado){
                mostra("Você acertou");
                break;
            } 
                else {
                    if(chute < numeroPensado){
                        mostra("Você errou, o numero pensado era maior");
                    } 
                    else {
                        mostra("Você errou, o numero pensado era menor");
                    }
                }
            tentativas ++;
        }

    </script>
7 respostas

Olá Victor,

aparentemente tudo certo com o código. Somente na função:

function sorteia(n){
  return 4
}

que como vc está colocando um número fixo, será sempre o mesmo número pensado como resultado. Qualquer coisa, posta aí :)

não, eu esqueci de mudar, antes estava programado para ser aleatório mesmo, coloquei o 4 para testar mesmo e esqueci de mudar antes de postar. a questão em sim que as frases do "mostra", não aparecem intercalados entre os erros, só quando as tentativas se encerram que aparece as frases.

<meta charset="UTF-8">

<h1>Jogo de Adivinhação!</h1>

<script>

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

    function mostrar(frase) {
        document.write(frase);
        pularLinha();
    }

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

    var adivinha = sorteia(10);

    var tentativa = 0

    while(tentativa < 3) {
        var chute = parseInt(prompt("Tente adivinhar o numero. Escolha um numero de 0 à 10."));
        if(chute == adivinha) {
            mostrar("Você acertou!");
            break;
        } else {
            mostrar("Você errou!")
            tentativa++;
        }
    }

    mostrar("O numero era " + adivinha + "." + "<br>" + "Peça para outro amigo tentar.");

</script>

O meu ocorre a mesma coisa, não aparece o "Você errou!" depois de uma tentativa incorreta, só aparece quando acerta ou termina as tentativas!

O meu acontece a mesma coisa.

<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 tentativa = 1;

while(tentativa <= 3) {

    var chute = parseInt(prompt("Chute um nº de 0 a 10:"));

    if(chute == numeroPensado) {

    mostra("Parabéns, você acertou!");

    } else{

    mostra("Você errou, o número pensado foi " + numeroPensado);

    }
tentativa++;
}

</script>

Não mostra a resposta entre as tentativas.

Victor, eu troquei o mostra por alert, e funcionou.

<script>

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

    function mostra(frase){
        document.write(frase);
        pularLinha();
    }
    function sorteia(n){
        return Math.round(Math.random() * n)
    }

    var numeroPensado = 4;

    var tentativas = 1;

        while(tentativas <= 3){
            var chute = parseInt(prompt("Advinhe um numero de 0 a 10"));
            if(chute == numeroPensado){
                mostra("Você acertou");
                break;
            } else {
                if(chute < numeroPensado){
                    alert("Você errou, o numero pensado era maior");
                }else {
                   alert("Você errou, o numero pensado era menor");
                }
            tentativas ++;
            }   
        }

Airan, ideia é boa, mas não é exatamente como eu queria, o que rola na aula é que a cada tentativa, aparece a frase na tela, e não um alerta. O problema em si que na aula funcionou perfeito, mas o meu não e não consigo saber pq.

solução!

Na aula 07 na lição 15, está a mensagem abaixo. Realmente na aula o código havia funcionado e agora não funciona mais. Acredito que por conta dessa atualização. Sendo assim, acredito que não há nada de errado com o seu código.

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

O recurso de repetição que aprendemos anteriormente pode ser utilizado para melhorar nosso programa de adivinhação, por exemplo.