Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Tamanho da array

Oi! Meu código está variando o tamanho da array. Não sei onde foi que errei. A princípio está exatamente da maneira ensinada na aula.


<meta charset="utf-8">

<h1>Adivinhe o número</h1>

<input>
<button>Acertou?</button>

<script type="text/javascript">

    function sorteia() { //essa função sorteia os números de 1 a 10

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

    }

    function sorteiaNumeros(quantidade) {

        var segredossss = []; //a variável sorteia vai receber a quantidade de números informada...
                              //var "segredossss" só pra diferenciar da var segredos, mas poderia ser o mesmo nome, já que tudo que está dentro de uma função só existe dentro dessa mesma função, a não ser que dê o return para capturar o resultado
        var numero = 1;

        while(numero <= quantidade) { //enquanto o número for menor que a quantidade informada...

            var numeroAleatorio = sorteia(); //a var numeroAleatorio vai receber o resultado da função sorteia()

            var achou = false; //A ideia é usarmos o push() somente se o segredo não for encontrado dentre os elementos da lista criada...

            //Entre a var achou e o nosso if() teremos que varrer a lista de números sorteados de segredossss, e verificar se o número selecionado aleatoriamente está contido nela. Se estiver, o achou será verdadeiro, e o push() não será executado.

            //Assim, criaremos um for:
            for(var posicao = 0; posicao < segredossss.length; posicao++) {

                    if(segredossss[posicao] == numeroAleatorio){
                           achou = true;
                           break;
                    }
             }


            if(achou == false) { //Se o achou for igual a false, chamamos o segredossss.push()
                segredossss.push(numeroAleatorio);
            }

            numero++;
        }

        return segredossss; //depois a função sorteiaNumeros vai retornar os 3 numeros solicitados para a var segredos
    }

    var segredos = sorteiaNumeros(4);
    console.log(segredos);

    var input = document.querySelector("input");
    input.focus(); //fica piscando para digitar quando abrir o programa


    function verifica() {

        var achou = false;
                            //o length pega automaticamente o tamanho da array
                            //poderia ser também posicao < 4
        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 = ""; //zera o campo do input após o alert
        input.focus(); //fica piscando o campo do input para digitar novamente
    }

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

    button.onclick = verifica;

</script>
1 resposta
solução!

Opa! Consegui resolver.

O problema estava no incremento fora do if.

if(achou == false) { //Se o achou for igual a false, chamamos o segredossss.push()

                segredossss.push(numeroAleatorio);
                numero++;
            }

//numero++ só pode ser feito se não encontrou número repetido