1
resposta

Não aparece a quantidade de números que eu quero.

Eu queria que fossem sorteados 6 números para o usuário tentar adivinhar, mas apenas um número é sorteado.

Segue o código:

<meta charset="utf-8">

<input/>

<button>Veja se você acertou.</button>

<script>

    function sorteia(){

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

    function sorteiaNumeros(quantidade){

        var valores = [];

        var numero = 1;

        while(numero <= quantidade){

            var numeroAleatorio = sorteia();

            if(numeroAleatorio != 0){

                var achou = false;

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

                    if(valores[posicao] == numeroAleatorio){

                        achou = true;
                        break;
                    }
                }

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

        return valores;
        }
    }

    var valores = sorteiaNumeros(6);

    console.log(valores);

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

    function verifica(){

        var achou = false;

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

            if(input.value == valores[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á, Pedro!!! Tudo bem contigo?

O fato de sortear somente um número é que o seu retorno está dentro da condicional if

            if(numeroAleatorio != 0){

                var achou = false;

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

                    if(valores[posicao] == numeroAleatorio){

                        achou = true;
                        break;
                    }
                }

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

        return valores;
        }

sendo que ele tem que retornar quando sair da condicional e ficar dentro o whilesomente

    while (numero <= quantidade) {

      var numeroAleatorio = sorteia();      

      if (numeroAleatorio != 0) {

        var achou = false;        

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

          if (valores[posicao] == numeroAleatorio) {

            achou = true;
            break;
          }
        }

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

      return valores;

    }

Feito essa alteração, é só rodar ;-)

Espero ter ajudado, Pedro!!!

Um abraço e bons estudos!!!