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

Meu código não está gerando resposta

<meta charset="UTF-8">

<input/>

<button>Compare 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();

            if(numeroAleatorio !== 0) {

                var achou = false;

                for(var 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(5);

    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("Você acertou!");
                achou = true;
                break;
            }
        }
    }

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

    button.onclick = verifica;

</script>

Meu código parece um pouco maior do que devia, fiquei com algumas dúvidas durante o vídeo mas consegui corrigir algumas coisas pelo Console. Só que meu código não está gerando o alerta de erro ou acerto, poderiam me ajudar?

8 respostas
solução!

Oi Heloisa, ficou faltando no seu código, inserir um if para verificar se está errado e exibir a mensagem de erro. Na função verifica, depois do for:

function verifica() {
    var achou = false;
    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!");
    }
}

Oi, Luiz! Fiz isso mas as mensagens de erro continuam rodando por todas as tentativas, tentei colocar um break até no if de "Você errou" mas não funcionou. Acho que não absorvi essa parte, como posso fazer para que a mensagem apareça somente uma vez sendo erro ou acerto?

A mensagem de erro é o alerta de "você Errou!" ? Copia seu código a partir da linha 37 até a última e cola ele aqui no forum.


                if(achou == false) {

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

        return segredos;
    }

    var segredos = sorteiaNumeros(5);

    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("Você acertou!");
                achou = true;
                break;
            }

            if(achou == false) {

                alert("Você errou!");

            }
        }
    }

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

    button.onclick = verifica;

</script>

Desculpe a demora! Aqui está, desde a linha 37 até o final.

Olá Heloisa,

A solução do seu problema é a primeira resposta do Luiz. No entanto você inseriu o

    if(achou == false){
        alert("Você Errou!");
    }

dentro do loop for e não após ele, como o Luiz havia indicado corretamente.

Agora consegui! Muito obrigada, Luiz e André!

Final feliz!! Boa pessoal!!

Que bom Heloisa! Não esqueça de marcar a primeira resposta do Luiz como solução.