1
resposta

Solução: Consolidando conhecimento - Módulo 9

Segue abaixo o código do jogo advinha.

<meta charset="utf-8">

<input />
<button>Compare com o meu segredo</button>

<script>

    fuction sorteia() { // Retornará um número aleatório entre 0 e 10.
        return Math.round(Math.random() * 10);
    }


    function sorteiaNumeros(quantidade) { // Essa função vai receber a quantidade de números que eu quero sortear e no final ela retorna uma lista de segredos.
        var segredos = []; // lista vazia.

        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] == numerosAleatorio) {
                        achou = true;
                        break;
                    }
                }


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

        return segredos;
    }

    var segredos = sorteiaNumeros(5);

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

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

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

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

</script>
1 resposta

Olá! Tudo bem? Espero muito que sim :)

Parabéns pelo desenvolvimento do jogo!

Com objetivo de somar aos seus estudos, trago algumas coisas com relação ao seu programa. Ao rodar seu código e analisá-lo, notei dois erros que estão afetando a execução deste.

Quando utilizamos o console do navegador (depurador), que pode ser aberto ao pressionar a tecla F12 ou as teclas CTRL+SHIFT+I, recebemos, inicialmente, o seguinte aviso:

Uncaught SyntaxError: Unexpected identifier 'sorteia’

Traduzindo, há um erro de sintaxe na função sorteia(). Em Javascript, o modo pelo qual escrevemos um código denomina-se sintaxe, semelhante ao que encontramos, por exemplo, na Língua Portuguesa. Desse modo, quando nos deparamos com um “SyntaxError” significa dizer que existe algo errado no que digitamos.

Ao verificarmos a função sorteia(), podemos notar que está faltando a letra “n” em function. Depois de a adicionarmos, teremos o seguinte resultado:

function sorteia() { // Retornará um número aleatório entre 0 e 10.
    return Math.round(Math.random() * 10);
}

Ao retornarmos ao console, veremos outro aviso:

Uncaught ReferenceError: numerosAleatorio is not defined

Após traduzir a frase, compreendemos que há um erro de referência. Quando declaramos uma variável, o nosso computador a armazena em sua memória e então aguarda o momento em que irá buscá-la (essa busca ocorre quando a chamamos). Contudo, quando vivenciamos um erro de referência, é porque nossa máquina não conseguiu encontrar determinada coisa — uma variável ou função, por exemplo.

Na função sorteiaNumeros() foi criada a variável numeroAleatorio. Logo após isso, você a chama dentro de uma estrutura de condição, porém como numerosAleatorio(). Notou que há um “s” a mais? Essa letra "a mais" impossibilita a busca pela variável correta.

Após remover o "s", a condicional ficará desta forma:

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

Com isso, seu código volta a funcionar e o usuário já pode tentar adivinhar o número secreto! Desse modo, o resultado final do seu código será:

<meta charset="utf-8">

<input />
<button>Compare com o meu segredo</button>

<script>

    function sorteia() { // Retornará um número aleatório entre 0 e 10.
        return Math.round(Math.random() * 10);
    }

    function sorteiaNumeros(quantidade) { // Essa função vai receber a quantidade de números que eu quero sortear e no final ela retorna uma lista de segredos.
        var segredos = []; // lista vazia.

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

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

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

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

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

</script>

Caso possua dúvidas acerca da minha explicação ou com relação ao curso, lembre-se que você pode contar com o fórum! Ficarei super contente em poder contribuir com seus estudos!

Até mais!

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