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

Aprimorando o encerramento do jogo

Bom dia, espero que estejam bem!

Pensei em alterar o final do jogo. Caso ele erre todas as tentativas, ao invés de somente acabar informando que errou, informar que as tentativas acabaram e qual era o número pensado. Segui a dica da Akemi Alice no post anterior e utilizei alert ao invés de mostra pra poder aparecer a mensagem em cada tentativa nas versões atuais.

Abaixo meu código.... vocês conseguem pensar uma outra forma que fique mais curto o código, ao invés de inserir um novo if no final? Ou assim seria o mais curto mesmo?

3 respostas
<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 tentativas = 1

    while (tentativas <= 3) {

        var chute = parseInt(prompt("Digite o número"));

        if (chute == numeroPensado) {

            alert("Você acertou! O numero pensado é " + numeroPensado);
            break;

        } else {

            alert("Você errou, tente novamente!");

        } if (tentativas == 3) { 

            alert("As tentativas acabaram, o número pensado é " + numeroPensado);
        }

        tentativas++;

    }

</script>
solução!

Oi Ivan, tudo bem com você?

Uma alternativa para tornar o código mais curto e evitar a repetição do alert no final é reorganizar a lógica do loop. Você pode utilizar apenas um único alert no final do loop, ao invés de colocá-lo dentro do else e novamente fora do loop. Para fazer isso, você pode criar uma variável booleana (por exemplo, acertou) que é inicializada como false e alterada para true quando o jogador acerta o número. Dessa forma, você pode utilizar essa variável para decidir qual mensagem exibir no final.

Aqui está o código com essa abordagem:

<meta charset="UTF-8">

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var numeroPensado = Math.round(Math.random() * 10);
    var tentativas = 1;
    var acertou = false;

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

        if (chute == numeroPensado) {
            acertou = true;
            break;
        } else {
            alert("Você errou, tente novamente!");
        }

        tentativas++;
    }

    if (acertou) {
        alert("Você acertou! O número pensado é " + numeroPensado);
    } else {
        alert("As tentativas acabaram, o número pensado é " + numeroPensado);
    }

</script>

Essa mudança economiza algumas linhas de código e elimina a repetição do alert. O restante do código permanece praticamente o mesmo. Continue praticando e desenvolvendo suas habilidades em programação! Se tiver mais dúvidas ou precisar de ajuda, estou aqui para ajudar :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado pela ajuda Maria, apliquei aqui!