1
resposta

Jogo advinha parte 3 - Resolução

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
// Se tiver algo de errado, por favor, me corrijam.

    function sorteia() {

       return Math.round(Math.random() * 10);
       /* Toda vez que a função "sorteia" for chamada, será retornado um valor aleatório de 0 á 10. */

    }

    function sorteiaNumeros(quantidade) {
        /* Essa função indicará a quantidade de números aleatórios dentro de "array".
         Ou seja: se digitarmos 3, ou qualquer outro número, essa será a quantidade de segredos, ou números, que serão gerados dentros de array. Porém, a idéia é geralos sem que aja a repetição de um mesmo segredo. */

        var segredos = [];
        /* Pode até parecer estranho ter uma variável "segredos" dentro e fora da função. Mas é importante lembrar, ou citar, que tudo o que está inserido dentro de uma função, só existe dentro dela. A menos que se use o "return" para levar para fora o que está dentro da função. */

        var numero = 1;

        while(numero <= quantidade) {
            /* Se o valor de número for menor ou igual a "quantidade" que foi escolhida pelo usuário, será gerado um novo valor de "segredos". */

              var numeroAleatorio = sorteia();
              // Aqui é sorteado um número aleatório.

              var achou = false;
              /* achou já se inicia em "false" */

              if (numeroAleatorio !== 0) {
                /* A lógica é: Se o "numeroAleatorio" for diferente 0, o código será executado. */

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

                           if(segredos[posicao] == numeroAleatorio){
                            /* Esse if irá procurar dentro de "segredos" números repetidos. Se em uma determinada posição for encontrado um valor semelhante ao "numeroAleatorio", o código de if será executado. */
                                achou = true;
                                /* Como foi encontrado um número diferente de 0, mas que se repete em alguma das posições de "segredos", damos um break e volta pra While novamente. Com isso, o processo será reiniciado de novo em:
                                - Sortear um número aleatório
                                - Verificar se ele é diferente de 0
                                - Entrar em um loop dentro de "for" para verificar se o número aleatório se encontra em alguma posição.
                                - Se sim, volta tudo de novo. Se não, passa para o if logo abaixo que adicionará esse número aleatório dentro da lista de segredos.
                                 */
                                break;
                           }

                     }

                     if (achou == false) {
                        /* Traduzindo: Se não achou o número dentro da lista, será o mesmo lançado dentro dela. */


                           segredos.push(numeroAleatorio);
                           /* "segredos.push" é uma maneira de colocar dentro da minha lista de "segredos" um número, ou valor. Como aqui, no caso, estamos usando a variável "numeroAleatorio" para trazer a função sorteia que faz exatamente isso, sortear um número de 0 á 10 e colocá-lo dentro de "segredos".*/

                           numero++;
                           // Serve para fazer o incremento na variável número, pois a condição de "while" é que o valor de número tem que ser menor ou igual a quantidade digitada pelo usuário. Quando o valor de numero passar da "quantidade", while não será mais executado.

                     }
              }

        }

        return segredos;

    }

    var segredos = sorteiaNumeros(3);
    /* Essa variável recebe o retorno do valor da variável "segredos" que está dentro da função "sorteiaNumeros". No caso, é o valor de 3 elementos que estão em array.
     Se em vez de colocar 3 eu colocasse 5, me seria retornado 5 elementos em array. */

    console.log(segredos);

    var input = document.querySelector("input");
    input.focus();

    function verifica() {

       var achou = false;

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

              if(input.value == segredos[posicao]) {

                     alert("Você ACERTOU!");
                     achou = true;
                     break;
              } 
       }

       if(achou == false) {

              alert("Você ERROU!");
       }

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

    }

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

    button.onclick = verifica;

</script>
1 resposta

Oiê Marcos Antônio, tudo bem?

Agradeço por esperar um retorno nosso!

Dei uma olhada no seu código e ele está bem organizado e condizente com o que foi passado pelo instrutor, e isso mostra o quão comprometido(a) você está com o curso. Os comentários que fez conforme foi desenvolvendo o código, também é muito interessante, essa prática ajuda a pessoa dev a absorver melhor o seu código. Continue assim!

Caso surjam quaisquer dúvidas eu estarei a sua disposição.

Bons estudos e a gente se vê!

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