Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Ele só sorteia um numero. Nao consigo colocar mais posições no array.

Não sei onde tá o erro, pra fazer ele sortear mais numeros.

<meta charset = "UTF-8">
<input/>
<button>COMPARE COM 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();
        var achou = false;
            if(numeroAleatorio !== 0){
                for(posicao = 0; posicao < segredos.length; posicao++){
                    if(segredos[posicao] = numeroAleatorio){
                    achou = true;
                    break;
                    }
                }
                if(achou == false){
                    segredos.push(numeroAleatorio);
                    numero++;
                }    
            }
        return segredos;
        }
    }

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

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

function verifica(){
    var achou = false;
    for(posicao = 0; posicao < segredos.length; posicao++){
        if(chute.value == segredos[posicao]){
            alert("Você acertou!");
            achou = true;
            break;
        }
    }    
        if(achou == false){
            alert("Você errou!");
        }


    chute.value = "";
    chute.focus();
}
var button = document.querySelector("button");
button.onclick = verifica;
</script>
3 respostas
solução!

Boa tarde, Karen! Como vai?

Acredito que o problema esteja no while da função sorteiaNumeros.

Veja que da forma que está implementado, o return segredos está dentro do while, consequentemente, retornará apenas um valor (o primeiro sorteado). Lembre-se que, geralmente (se não sempre), você irá colocar o return antes da chave que fecha a função.

Outra observação é nos trechos if(segredos[posicao] = numeroAleatorio) e if(numeroAleatorio !== 0). Lembre-se que o correto seria if(segredos[posicao] == numeroAleatorio) e if(numeroAleatorio != 0).

Alterando a função sorteiaNumeros conforme o código abaixo, o seu código funcionou perfeitamente aqui.

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

Aproveito para lhe parabenizar pelo código desenvolvido! Está no caminho certo! Bons estudos :)

Caso sua dúvida seja respondida com esse comentário, peço por gentileza que marque minha resposta como "✓ Marcar Solução".

Qualquer dúvida estou à disposição.

Obrigada! Foi feito com MUITA consulta. rss Mas me perco muito nas chaves ainda, prestarei mais atenção! Muito obrigada por analisar meu código! Agora deu certinho.

Por nada! Precisando é só chamar!

Quanto a se perder nas chaves, no início é bem normal, mas logo você pega o jeito e já vai no automático!