2
respostas

[Dúvida] Quiz

Boa tarde, como recomendado, queria complementar mais meu código

<meta charset="UTF-8">

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

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

    var facil = "fácil";
    var media = "média";
    var dificil = "difícil";
     var nivelDeDificuldade;
    var tentativas;
    var golsDoisMil = 32;
    var quantidadeDeGolsDois = 10;
    var quantidadeDeTitulosPsg = 12;

     do{
       var nivelDeDificuldade = prompt("Digite o nível de dificuldade: fácil, média, difícil, ou sair");
       var tentativas = 1;

        if (nivelDeDificuldade == facil) {
            while (tentativas <= 3) {
                var quantidadeDeGols = prompt("Quantos gols o Neymar fez em 2022?");
                if (quantidadeDeGols == golsDoisMil) {
                    alert('Parabéns, você acertou!');
                    mostra("Você acertou!");
                    break;
                } else {
                    if (quantidadeDeGols)
                    alert("Você errou, tente novamente!");
                    tentativas++;

                }
            }
        } else if (nivelDeDificuldade == media) {
            while (tentativas <= 3) {
                var quantidadeDeGolsChampions = prompt("Quantos gols o Neymar fez na Champions de 2015?");
                if (quantidadeDeGolsChampions == quantidadeDeGolsDois) {
                    alert("Parabéns, você acertou!");
                    mostra("Você acertou!");
                    break;
                } else {
                    alert("Você errou, tente novamente!");
                    tentativas++;
                }
            }
        } else if (nivelDeDificuldade == dificil) {
            while(tentativas <= 3){
                var quantidadeTitulos = prompt("Quantos títulos o Neymar ganhou no PSG?");
                if (quantidadeTitulos == quantidadeDeTitulosPsg){
                    alert("Parabéns, você acertou!");
                    mostra("Você acertou!");
                    break;
                } else {
                    alert("Você errou, tente novamente!");
                    tentativas++;
                }
            }
        }

    } while (nivelDeDificuldade != 'sair');
</script>

Eu quero fazer com que quando errarem a resposta, eu consiga falar se está perto ou distante da resposta certa. Sou bem iniciante na programação, e em todos os cursos que fiz, não lembro de ter visto algo do tipo

2 respostas

Oi, Flavio! Tudo bem?

Que bacana o seu projeto, parabéns! Para adicionar a funcionalidade de informar se a resposta está perto ou distante da resposta correta, podemos usar a diferença entre a resposta do usuário e a resposta correta, deixando o nosso código da seguinte forma:

<meta charset="UTF-8">

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

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

    var facil = "fácil";
    var media = "média";
    var dificil = "difícil";
    var nivelDeDificuldade;
    var tentativas;
    var golsDoisMil = 32;
    var quantidadeDeGolsDois = 10;
    var quantidadeDeTitulosPsg = 12;

    do {
        var nivelDeDificuldade = prompt("Digite o nível de dificuldade: fácil, média, difícil, ou sair");
        var tentativas = 1;

        if (nivelDeDificuldade == facil) {
            while (tentativas <= 3) {
                var quantidadeDeGols = prompt("Quantos gols o Neymar fez em 2022?");
                if (quantidadeDeGols == golsDoisMil) {
                    alert('Parabéns, você acertou!');
                    mostra("Você acertou!");
                    break;
                } else {
                    var diferenca = Math.abs(quantidadeDeGols - golsDoisMil);
                    if (diferenca <= 5) {
                        alert("Você errou, mas está perto! Tente novamente!");
                    } else {
                        alert("Você errou, está distante! Tente novamente!");
                    }
                    tentativas++;
                }
            }
        } else if (nivelDeDificuldade == media) {
            while (tentativas <= 3) {
                var quantidadeDeGolsChampions = prompt("Quantos gols o Neymar fez na Champions de 2015?");
                if (quantidadeDeGolsChampions == quantidadeDeGolsDois) {
                    alert("Parabéns, você acertou!");
                    mostra("Você acertou!");
                    break;
                } else {
                    var diferenca = Math.abs(quantidadeDeGolsChampions - quantidadeDeGolsDois);
                    if (diferenca <= 2) {
                        alert("Você errou, mas está perto! Tente novamente!");
                    } else {
                        alert("Você errou, está distante! Tente novamente!");
                    }
                    tentativas++;
                }
            }
        } else if (nivelDeDificuldade == dificil) {
            while(tentativas <= 3){
                var quantidadeTitulos = prompt("Quantos títulos o Neymar ganhou no PSG?");
                if (quantidadeTitulos == quantidadeDeTitulosPsg){
                    alert("Parabéns, você acertou!");
                    mostra("Você acertou!");
                    break;
                } else {
                    var diferenca = Math.abs(quantidadeTitulos - quantidadeDeTitulosPsg);
                    if (diferenca <= 2) {
                        alert("Você errou, mas está perto! Tente novamente!");
                    } else {
                        alert("Você errou, está distante! Tente novamente!");
                    }
                    tentativas++;
                }
            }
        }

    } while (nivelDeDificuldade != 'sair');
</script>

Neste código, estamos calculando a diferença entre a resposta do usuário e a resposta correta usando Math.abs(), que retorna o valor absoluto da diferença. Se a diferença for pequena (por exemplo, 5 para o nível fácil e 2 para os níveis médio e difícil), o usuário recebe uma mensagem dizendo que está perto, caso contrário, a mensagem informa que está distante.

Espero ter ajudado!

Um forte abraço e bons estudos!

Oi, Sarah Ocy Sousa Medeiros.

Notei que usou o "do" no seu código. Como funciona? É um substituto para uma outra terminologia?