1
resposta

Código final explicado

Fiz o código apresentado em aula incrementando comentários das funcionalidades de cada linha :)

<meta charset="UTF-8">
<input/>
<button>Compare com o meu segredo</button>
<script>
    //sorteia um numero entre 0 a 10
    function sorteia() {
        return Math.round(Math.random() * 10);
    }

    function sorteiaNumeros(quantidade) {
        var segredos = []; // Cria um array vazio para armazenar os números sorteados.

        var numero = 1; // Inicializa uma variável para contar quantos números foram sorteados.

         // Enquanto ainda não sorteou a quantidade desejada de números:
        while(numero <= quantidade) {
            var numeroAleatorio = sorteia(); //Chama a função sorteia() para obter um número aleatório.

             // Verifica se o número aleatório não é zero (pois queremos números de 1 a 10).
            if(numeroAleatorio !==0) {
                var achou = false; // Inicializa uma variável para verificar se o número já foi sorteado anteriormente.

                 // Percorre o array de segredos para verificar se o número aleatório já foi sorteado antes.
                for(var posicao = 0; posicao < segredos.length; posicao++) {
                    if(segredos[posicao] == numeroAleatorio) {
                        achou = true; // Se o número já foi sorteado, marca achou como true.
                        break; // Sai do loop, pois não é necessário continuar verificando.
                    }
                }
                // Se o número não foi encontrado no array de segredos, adiciona-o ao array e incrementa o contador de números sorteados.
                if(achou == false) {
                    segredos.push(numeroAleatorio);
                    numero++;
                }
            }
        }   
        // Retorna o array de números sorteados.
        return segredos;
    }

    // gera três números aleatórios únicos e armazená-los na variável segredos
    var segredos = sorteiaNumeros(3);

    console.log(segredos);
    //seleciona o elemento input da página e o focalizam, para que o cursor do usuário esteja automaticamente no campo de entrada de texto quando a página for carregada.
    var input = document.querySelector("input");
    input.focus();

    //é um loop for que percorre o array segredos e executa um bloco de código para cada elemento do array
    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

Olá luciana felix tudo bem ? bom dia eu vou dar um dica que talvez ajude você agora e nos proximos codigos que você for escrever também basicamente e sobra esse

     if (achou == false) {
              segredos.push(numeroAleatorio);
               numero++;
       }

esse if ele pode ser trocado por

    if (!achou) {
          segredos.push(numeroAleatorio);
           numero++;
    }

por que se o valor não for igual a true ele vai adicionar um numero aleatorio no array de segredos e vai incrementar normalmente !

com essa parte aqui você pode também fazer o seguinte !

function sorteiaNumeros(quantidade) {
        var segredos = []; // Cria um array vazio para armazenar os números sorteados.

        var numero = 1; // Inicializa uma variável para contar quantos números foram sorteados.

         // Enquanto ainda não sorteou a quantidade desejada de números:
        while(numero <= quantidade) {
            var numeroAleatorio = sorteia(); //Chama a função sorteia() para obter um número aleatório.

             // Verifica se o número aleatório não é zero (pois queremos números de 1 a 10).
            if(numeroAleatorio !==0) {
                var achou = false; // Inicializa uma variável para verificar se o número já foi sorteado anteriormente.

                 // Percorre o array de segredos para verificar se o número aleatório já foi sorteado antes.
                for(var posicao = 0; posicao < segredos.length; posicao++) {
                    if(segredos[posicao] == numeroAleatorio) {
                        achou = true; // Se o número já foi sorteado, marca achou como true.
                        break; // Sai do loop, pois não é necessário continuar verificando.
                    }
                }
                // Se o número não foi encontrado no array de segredos, adiciona-o ao array e incrementa o contador de números sorteados.
                if(achou == false) {
                    segredos.push(numeroAleatorio);
                    numero++;
                }
            }
        }   
        // Retorna o array de números sorteados.
        return segredos;
    }

Transformar nisso:

function sorteiaNumeros(quantidade) {
        var segredos = []; 
        var numero = 1; 

        while(numero <= quantidade) {
            var numeroAleatorio = sorteia()	
            if (numeroAleatorio != = 0) return; 
             
             var achou = false;
             for(var posicao = 0; posicao < segredos.length; posicao++)  {
                    if(segredos[posicao] == numeroAleatorio) {
                        achou = true; 
                        break;
                    }
                
                    if (!achou) {
                        segredos.push(numeroAleatorio);
                        numero++;
                    }
             }
        return segredos;
    }