1
resposta

Qual seria uma solução melhor para informar a quantidade de tentativas que o usuário possui?

Quebrei a cabeça para inserir a quantidade de tentativas que o usuário possui. Porém, da forma que está feita, acredito que o código só funciona com esses valores. Qual seria a melhor maneira de escrever esse código?

<meta charset="UTF-8">

<script>
//============= Declaração de funções ===============//

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

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

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

//============== Escolha do número =================//

    var nome = prompt("Seja bem vindo ao jogo! Informe o seu nome:");
    var numeroPensado = sorteia(1000);
    var tentativas = 2;
    console.log(numeroPensado);


//============= Verificação do chute ==============//

    for (var contador = 1; contador <= 3; contador++) {


    var chute = parseInt(prompt(nome + "! Digite um número entre  0 e 1000:"));



    if (chute == numeroPensado) {
        mostra("Parabéns! Você acertou! O numéro pensado foi o " + numeroPensado + ".");
        break;

    } else {
       if (tentativas >= 2) {
            alert("Você errou! Você possui mais " + tentativas + " tentativas.");
        }
        if (tentativas == 1) {
            alert("Você possui mais " + tentativas + " tentativa.");
        }    
        }
        if (contador == 3) {
            mostra("Suas tentativas acabaram. O número pensado foi " + numeroPensado + ".");
        }
        tentativas = tentativas - 1;
    }

</script>
1 resposta

Olá, Caio! Tudo bem?

Primeiro, peço perdão pela demora.

Quero comentar que gostei bastante da sua organização e cuidado em comentar seu algoritmo, esse hábito é muito importante de se ter, tanto para o seu entendimento quanto para o de outras pessoas que vão ler seu código!

Agora, vamos para a solução! No seu caso, pode utilizar o laço de repetição while para verificar a variável tentativas. Dentro dele, você irá repetir os seguintes passos:

  1. Perguntar o valor do chute para o usuário;
  2. Se o valor estiver correto, mostrar a mensagem "Parabéns! Você acertou! O numéro pensado foi o " + numeroPensado +."
  3. Caso contrário, diminuir o valor da variável tentativas do usuário e informar quantas ainda restam ou se já acabaram.

O algoritmo final ficará da seguinte maneira:

<meta charset="UTF-8">

<script>
//============= Declaração de funções ===============//

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

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

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

//============== Escolha do número =================//

    var nome = prompt("Seja bem vindo ao jogo! Informe o seu nome:");
    var numeroPensado = sorteia(1000);
    var tentativas = 3;
    console.log(numeroPensado);

//============= Verificação do chute ==============//
    while(tentativas>0){ //enquanto a variável "tentativas" for maior que 0, faça:
        var chute = parseInt(prompt(nome + "! Digite um número entre  0 e 1000:"));
        if(chute==numeroPensado){ //verifica se o chute foi correto
            mostra("Parabéns! Você acertou! O numéro pensado foi o " + numeroPensado + ".");
            break; //encerra o laço while
        }else{ //caso contrário, o chute não foi correto:
            tentativas--; //decrementa, ou seja, diminui "-1" das tentativas
            if(tentativas==0){ //se as tentativas tenham acabado (chegado em 0), avisa ao usuário
                mostra("Suas tentativas acabaram. O número pensado foi " + numeroPensado + ".");
            }else{ //caso contrário, mostra quantidade de tentativas restantes
                alert("Você errou! Você possui mais " + tentativas + " tentativas.");
            }
        }
    }
</script>

Espero que isso tenha te ajudado. Abraços e bons estudos!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software