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

Interrompendo uma repetição

Não consigo reproduzir na tela o passo a passo. Só aparece na tela as tentativas no final

4 respostas
<meta charset="UTF-8">
<script>

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

function mostra(frase) {
    document.write("<big>" + frase + "</big>");
    pulaLinha();
}

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

var numeroPensado = sorteia(10);
console.log(numeroPensado);
cont = 1;

while (cont <= 3){
    var chute = parseInt(prompt("Digite um número"));

    if (chute == numeroPensado){

        alert("Acertou!!!");
        break;

    }else{

        alert("Errou, tente novamente!!!");
    }
    cont++;
}

mostra("Fim!!!");

</script>

Olá, Fiaschi! Tudo bem contigo?

Rodei seu código e como não achei erro, quero entender melhor sua dúvida ;-)

Quer mudar o comportamento do código?

Diz aqui a sua ideia para poder melhor te ajudar.

Ficamos no aguardo!

O que acontece é que quando faço uma tentativa, ela não aparece a mensagem na tela, só aparece o pop-up solicitando a nova tentativa. Somente depois das tentativas é que aparece os os prints com as mensagens.

solução!

Fala, Fiaschi!!!

Então vamos lá!!!

Para que a ocorra essa impressão na tela, o While não seria uma boa opção e nem mesmo o for. Quando rodamos o código ele fica esperando que algo seja digitado para que tenha um resultado da lógica, logo ele processa e manda para imprimir na tela quando acabar o looping.

Haveria outra forma? Sim, mas teríamos que entrar em outros conceitos que não cabem agora. Conforme for avançando nos cursos, serão abordados ;-)

Neste caso, vamos dar uma turbinada no temos em mãos

Neste caso eu coloquei um segundo ifpara que possa imprimir o número de tentativas quando o usuário acertar o número. Disse que se o contador for igual a 1 ou 2 ou 3 ele possa imprimir qual tentativa foi junto com o acerto.

        if (chute == numeroPensado) {
            if (cont == 1 || cont == 2 || cont == 3) {

                mostra("Acertou na sua " + cont + "º tentativa!!! É isso aí :-)");
                break;
            }

Seguindo, eu deixei o alertpara cada erro e acrescentei uma mensagem para cada erro contabilizando a quantidade desses erros. A ideia foi a mesma que usei nos acertos. Como eu quis imprimir uma frase para cada erro, abri três ifs

        } else if (cont == 1) {
            alert("Errou!");
            mostra("Seu PRIMEIRO chute foi " + chute + ". Errou na primeira rs");
        } else if (cont == 2) {
            alert("Errou!");
            mostra("Seu SEGUNDO chute foi " + chute + ". Teve uma segunda chance!!!");
        } else if (cont == 3) {
            alert("Errou!");
            mostra("Seu TERCEIRO chute foi " + chute + ". Acabaram suas chances!!! :-(");
        }

Espero ter ajudado, Fiaschi!

Bons estudos e vamos em frente!