1
resposta

Criar máximo de tentativas no adivinha_mais

Oi! Estava tentando misturar os dois jogos que o professor ensina na aula, tentando colocar um limite máximo de tentativas nesse código aí de baixo. Ele fez isso no primeiro jogo, que era mais simples, usando while() e if() mas não tô conseguindo acertar nesse.

Tentei colocar o while logo acima da função verifica() e o máximo que consegui foi que ele dê três alerts de erro seguidos com um chute.

Tentei também colocar o button.onclick entre while e if e não deu resultado nenhum, o jogo seguiu rodando igual. Alguém pode me dar uma luz? :)

Valeu!

<meta charset="UTF-8">


<input/>
<button>Tenta adivinhar um número de 0 a 10! Digita e clica aqui!</button>

<script>

    function pulaLinha() {

        document.write("<br>");    
        document.write("<br>");    
    }

    function mostra(frase) {

        pulaLinha();
        document.write(frase);
        pulaLinha();
    }

    function sorteia() {

    return Math.round(Math.random() * 10)

    }

    function sorteiaNumeros(quantidade) {

        var numerosPensados = [];
        var numero = 1
         while(numero <= quantidade) {

                 var numeroAleatorio = sorteia();
                 var achou = false;
             if(numeroAleatorio !== 0){

                 for(var posicao = 0; posicao < numerosPensados.length; posicao++) {

                     if(numerosPensados[posicao] == numeroAleatorio) {
                         achou = true;
                         break;
                     }
                 }
                 if(achou == false) {
                numerosPensados.push(numeroAleatorio);
                numero++;
            }

           }     

        }

        return numerosPensados;


    }


    var numerosPensados = sorteiaNumeros(3);
    console.log(numerosPensados);
    var chute = document.querySelector("input");
    var input = document.querySelector("input");
    input.focus();
    var button = document.querySelector("button");

    function verifica() {



            var achou = false    
            for(var posicao = 0; posicao < numerosPensados.length; posicao++) {    
            if(input.value == numerosPensados[posicao]) {

            alert("Você ACERTOU");
            achou = true
            mostra("Acabou o joguinho!")
            break;


            } 

        }

            if(achou == false) {

                    alert("Você errou :(")

            }

            input.value = "";
            input.focus();


        }







    button.onclick = verifica;






</script>
1 resposta

Olá Helena. Se você deseja criar um número máximo de tentativas, primeiro vamos adicionar uma variável para contar a quantidade de tentativas:

var button = document.querySelector("button");
 var tentativas = 0;

Dentro da função verifica(), colocaremos como a primeira linha um incrementador da variável "tentativas", ou seja, cada verificação vai aumentar o número de tentativas em 1

function verifica() {

    tentativas++;
    //resto do código
}

No final do código da função verifica, quando o usuário erra o número sorteado, acrescentamos uma verificação para ver se o usuário já excedeu o limite de jogadas (nesse caso, ele só poderá jogar 3 vezes), caso ele erre e ultrapasse o limite de 3 tentativas, vamos exibir a mensagem informando que o número máximo de tentativas foi excedido.

if(achou == false) {
    alert("Você errou :(");
     if(tentativas >= 3) {
          mostra("Número maximo de tentativas ultrapassado :(");
          return;
    }
  }

Código completo:

<meta charset="UTF-8">


<input/>
<button>Tenta adivinhar um número de 0 a 10! Digita e clica aqui!</button>

<script>

    function pulaLinha() {

        document.write("<br>");    
        document.write("<br>");    
    }

    function mostra(frase) {

        pulaLinha();
        document.write(frase);
        pulaLinha();
    }

    function sorteia() {

    return Math.round(Math.random() * 10)

    }

    function sorteiaNumeros(quantidade) {

        var numerosPensados = [];
        var numero = 1
         while(numero <= quantidade) {

                 var numeroAleatorio = sorteia();
                 var achou = false;
             if(numeroAleatorio !== 0){

                 for(var posicao = 0; posicao < numerosPensados.length; posicao++) {

                     if(numerosPensados[posicao] == numeroAleatorio) {
                         achou = true;
                         break;
                     }
                 }
                 if(achou == false) {
                numerosPensados.push(numeroAleatorio);
                numero++;
            }

           }     

        }

        return numerosPensados;


    }


    var numerosPensados = sorteiaNumeros(3);
    console.log(numerosPensados);
    var chute = document.querySelector("input");
    var input = document.querySelector("input");
    input.focus();
    var button = document.querySelector("button");
    var tentativas = 0;

    function verifica() {

        tentativas++;



            var achou = false    
            for(var posicao = 0; posicao < numerosPensados.length; posicao++) {    
            if(input.value == numerosPensados[posicao]) {

            alert("Você ACERTOU");
            achou = true
            mostra("Acabou o joguinho!")
            break;


            } 

        }

            if(achou == false) {
                alert("Você errou :(");
                if(tentativas >= 3) {
                    mostra("Número maximo de tentativas ultrapassado :(");
                    return;
                }
            }

            input.value = "";
            input.focus();


        }







    button.onclick = verifica;






</script>