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

Fiz o código abaixo, não está exatamente igual ao que foi feito pelo instrutor do curso, não inseri as instruções para não dar o numero zero nem repetir, mas meu array fica sempre zerado. não consigo achar a falha.

<meta charset = "UTF-8">

<input/>

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

<script>

    function sorteia() {

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

    function sorteiaNumeros(quantidade) {

        var segredos = [];
        var numero = 1;

        while(numero <= quantidade) {

            var numeroAleatorio = sorteia();
            numero++;

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

                segredos.push(numeroAleatorio);

            }                
        }

    return segredos;

    }

    var segredos = sorteiaNumeros(3);

    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("Voce acertou o segredo");
                achou = true;
                break;
            }
        }

        if(achou == false) {

        alert("Voce errou o segredo");
        }

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

    }

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


</script>
1 resposta
solução!

Thiago,

Não está entrando no for da function sorteiaNumeros porque o teste do for é posicao < segredos.length

A variável posicao no primeiro teste do for é 0 (zero) e o length do array segredos também é 0 (zero), portanto, zero não é menor que zero e não entra no for.

Na lógica que você construiu, o while já faz o papel de criar a quantidade de segredos que você deseja - no caso 3 - o for fica desnecessário, é só remover que funciona.

O código ficaria assim:

function sorteiaNumeros(quantidade) {

    var segredos = [];
    var numero = 1;

    while(numero <= quantidade) {

        var numeroAleatorio = sorteia();
        numero++;
        console.log(segredos.length);

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


            console.log(segredos.length);

            segredos.push(numeroAleatorio);
        //}                
    }

    return segredos;
}

O restante do código está legal e funciona muito bem! Parabéns!