2
respostas

jogo adivinha

Oi Fabio quando estava fazendo o meu script não estava funcionando o erro então tive que mudar uma coisa que estava no video. De uma olhada e me fala o que você acha:

<meta charset="UTF-8">

<input/>

<button style="background-color: red;
               color:white;">Compare com o meu segredo</button>

<script>
    var segredos = [5,7,8,12];
    var input = document.querySelector("input");

    function verifica(){

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


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

Oi Leticia, tudo bom?

Ficou interessante, mas me parece que ele ainda não funciona da maneira esperada.

Veja só: Na função verifica vc está fazendo um for para percorrer a lista de segredos. E se o input.value for igual a algum segredo vc manda o aviso de acertou e sai do loop com o comando break.

Só q vc tbm sai do loop e manda uma mensagem para a pessoa se ela errar.

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

O que acontece se na sua lista de segrego vc tiver os número [9,2,4,0] e o input for 4?

Na primeira volta do loop vc vai entrar no segundo if que vc fez if(4 != 9) e nesse momento vc manda a mensagem de erro e sai do loop. Ou seja, mesmo sendo um número válido vc fala pra pessoa que ela errou.

O que eu faria é algo assim. Crio a variavel achou com o valor de false inicialmente, afinal por padrão não achamos o número dentro dos segredos.

Depois passo por todo array verificando os números que estão lá. Se por acaso acharmos o número então mudamos o valor da variável achou para verdadeiro e saimos do loop. Como já achamos um número, não precisamos verificar os outros.

E fora do loop eu verifico o valor de achou e mando a mensagem pra pessoa.

function verifica(){
    let achou = false;
    for(var posicao = 0; posicao< segredos.length; posicao++){
        if(input.value == segredos[posicao]){        
            achou = true;
            break;
        }
    }

    if(achou){
        alert("Voce ACERTOU!!!!");
    }else{
        alert("Voce ERROU!!!!");
    } 

}

Oi Letícia como já foi dito acima a lógica está errada, segue uma Solução do exercício.

Você pode fazer uma comparação e verificar porquêo código não funciona como o esperado.

Espero ter ajudado e bons estudos.