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

Array continua sem números

Fiz todo o passo a passo porém quando eu insiro o console.log para ele mostrar quais números estão no Array, ele me mostra 0.

O programa roda, porém não é gerado nenhum número dentro do Array.

<meta charset="UTF-8">


<h1>ADIVINHE O NUMERO</h1> 


<input/>

<button>Comparar com o segredo!</button>

<script>

    function sorteia() {
        Math.round(Math.random() * 10);
    }

    function sorteiaNumero(quantidade) {

        var segredos = [];
        var contador = 1;

        while(contador <= quantidade) {
            var numeroAleatório = sorteia();
            contador ++;


            if(numeroAleatório !== 0) {
                var achou = false;
            }

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

                if(segredos[i] == numeroAleatório) {
                    achou = true;
                    break;
                }
            }

            if(achou = false) {
                segredos.push(numeroAleatório);
            }    
        }

        return segredos;
    }



    var segredos = sorteiaNumero(5);

    console.log(segredos);

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

    function verifica() {
        var chute = false

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

            if(input.value == segredos[i]) {
                alert("Você ACERTOU!!!");
                chute = true;
                break;
            }
        }
            if(chute == false) {
                alert("Você ERROU!!!")                
            }

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

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




</script>

`

1 resposta
solução!

Oi Hudson tudo bem?

Tinha alguns problemas no seu código. Na função function sorteiaNumero(quantidade) { Na linha if(achou = false) { você usou = ao invés de == Tinha que adcionar um contador--; se achasse um número repetido para não criar um array com menos de 5 números.

E consertei essa função function sorteia() { return Math.round(Math.random() * 9+1); }

Para nunca gerar zero e retornar o número para a função pai.

Veja como ficou o código:

<meta charset="UTF-8">


<h1>ADIVINHE O NUMERO</h1>


<input />

<button>Comparar com o segredo!</button>

<script>

    function sorteia() {
        return Math.round(Math.random() * 9+1);
    }

    function sorteiaNumero(quantidade) {

        var segredos = [];
        var contador = 1;

        while (contador <= quantidade) {
            var numeroAleatório = sorteia();
            contador++;


            var achou=false;
            for (i = 0; i < segredos.length; i++) {

                if (segredos[i] == numeroAleatório) {
                    achou = true;
                    contador--;
                    break;
                }
            }

            if (achou == false) {
                segredos.push(numeroAleatório);
            }
        }

        return segredos;
    }



    var segredos = sorteiaNumero(5);

    console.log(segredos);

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

    function verifica() {
        var chute = false

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

            if (input.value == segredos[i]) {
                alert("Você ACERTOU!!!");
                chute = true;
                break;
            }
        }
        if (chute == false) {
            alert("Você ERROU!!!")
        }

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

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




</script>

Espero ter ajudado!!!

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