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

Gostaria de saber pq meu jogo fica sempre no mesmo acerto

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

  }


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

    }

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

    button.onclick = verifica;

</script>
2 respostas
solução!

Oi Mateus, tudo bem com você?

O motivo pelo qual isso está ocorrendo, é que os números secretos são sorteados e armazenados em uma lista chamada "segredos", e essa lista não muda durante o jogo. Então, toda vez que o jogador insere um número, o código verifica se esse número está na lista de segredos, e como os números não mudam, o jogo sempre considera o número inserido como um acerto. Para resolver esse problema, vamos fazer algumas alterações no código:

<meta charset="UTF-8">

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

<script>
    // Função para sortear um número aleatório de 0 a 10
    function sorteia() {
        return Math.round(Math.random() * 10);
    }

    // Função para sortear um conjunto de números secretos sem repetição
    function sorteiaNumeros(quantidade) {
        var segredos = [];
        while (segredos.length < quantidade) {
            var numeroAleatorio = sorteia();
            // Verifica se o número já existe no conjunto de segredos
            if (segredos.indexOf(numeroAleatorio) === -1) {
                segredos.push(numeroAleatorio);
            }
        }
        return segredos;
    }

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

    function verifica() {
        // Chamando a função para sortear novos segredos a cada vez que o jogador clica
        var segredos = sorteiaNumeros(5);
        console.log(segredos);

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

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

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

    var button = document.querySelector("button");
    button.onclick = verifica;
</script>

Agora, cada vez que o jogador clicar no botão "Compare com o meu segredo", um novo conjunto de números secretos será gerado.

Espero ter ajudado, se tiver mais dúvidas estou à disposição.

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

Deu certo, muito obrigado!!!