1
resposta

Código idêntico ao do professor porem não roda

Já revisei 3 vezes e não consigo encontrar o problema

<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();
                var achou = false;

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

                        if(segredos[posicao] == numeroAleatorio){
                            achou = true;
                            break;
                        }
                    }

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

            }

        }

        return segrdos;

    }

    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");
                    achou = true;
                    break;
            }

        }

        if(achou == false) {

            alert("voce errou");
        }

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

    }

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

    button.onclick = verifica;

</script>
1 resposta

Oiii Thiago, como você está?

Analisando seu código notei alguns trechos de código diferentes do apresentado em aula.

A primeira é que a variável var achou = false tem que estar dentro da condição if(numero aleatorio!==0), pois, devemos considerar que o primeiro número não foi encontrado e adicioná-lo no array.

Também percebi que há um erro de digitação, o correto é segredos, mas em seu código está segrdos, no return da função sorteiaNumeros(). Como há um erro de digitação, o código não conseguirá adicionar os itens no array, pois não está sendo retornado o valor correto.

Por fim, é necessário usar dois iguais na comparação (if(achou = false)), pois quando utilizamos apenas um igual, estamos realizando a atribuição e para esse caso queremos comparar se a variável achou tem ou não o resultado falso.

Segue abaixo o código com as modificações citadas:

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

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

            }
        }

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

        input.value = "";
        input.focus();
    }
    var button = document.querySelector("button");
    button.onclick = verifica;

</script>

Em caso de mais dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!