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

Jogo adivinha

Caros estou com erro neste código:

<meta charset="UTF-8">

<input/>

<button>Compre o meu segredo</button>


<script>

    var segredos = [5, 7, 10, 2, 3];

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

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


    function verifica () {

        var achou = false;

        for (var posição = 0; posição < segredos.length ; posição ++) {

        if(input.value == segredos [posição]) {

            alert("Você Acertou");
            break
        }   
            }

        if (achou == false) {
        alert ("Você Errou");
        }
        input.value = "" ;
        input.focus () ;
    }
8 respostas

Fala aí, Guilherme! Tudo certo, cara? =)

Eu testei seu código aqui e mesmo depois de acertar, ele aparece um popup dizendo que o usuário errou... Seria esse o erro que você está enfrentando, mesmo?

Se for, a única coisa que faltou você fazer foi adicionar a seguinte linha

achou = true;

No meio do seu if, assim:

...
if (input.value == segredos[posicao]) {
    achou = true;
    alert("Você acertou");
    break;
}
...

Basicamente, o que você está fazendo é alterando o valor da variável achou, pois após a execução do bloco do for, você faz uma verificação nessa variável. Se ela guardar false, quer dizer que não foi encontrado o resultado e, portanto, o usuário errou. Mas se a execução for interrompida no meio do if, quer dizer que o usuário encontrou, basta alterar o valor dessa variável. =)

Espero ter ajudado, mas qualquer dúvida não deixe de postar por aqui, no fórum, para que possamos ajudá-lo!

Abraço e bons estudos,

Fábio

Fábio Takeo Ueno , o código não está rodando só está aparecendo o botão porem não está executando nada mesmo com as alterações indicadas.

solução!

Guilherme,

Estranho... Tenta fazer o seguinte:

  • No começo do seu arquivo, coloca as tags <html>, <head> e <body>, assim:
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>

Repare que eu já coloquei aquela tag <meta> dentro da <head>...

  • Dentro do <body>, coloque todo o restante do código:
<body>
    <input>
    <button>Compare o meu segredo</button>

    <script>
        ...
  • No final do código, lembre-se de fechar a tag <script> e o restante, assim:
    ...
    </script>
</body>
</html>

Depois de fazer isso, tenta executar e posta aqui o resultado!

Fábio

Fábio Takeo Ueno , o erro persiste agora inviabilizando o codigo pela utilização do

<html>
<head>
    <meta charset="UTF-8">
</head>
<body>

Acontece que agora o sublime não está reconhecendo o html

<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
  <input>
  <button>Compare o meu segredo</button

<script>

    var segredos = [5, 7, 10, 2, 3];

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

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


    function verifica () {

        var achou = true;

        for (var posição = 0; posição < segredos.length ; posição ++) {

        if(input.value == segredos [posição]) {

            alert("Você Acertou");
            break
        }   
            }

        if (achou == false) {
        alert ("Você Errou");
        }
        input.value = "" ;
        input.focus () ;
    }
    </script>
    </body>
    </html>

Olá.

O problema - além do que o Fabio tinha destacado sobre atribuir o valor true pra variável achou quando o usuário digitar um número que consta na lista - é que você não fechou a tag <script>.

Olhe só:

<input/>

<button>Compre o meu segredo</button>


<script>

    var segredos = [5, 7, 10, 2, 3];

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

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


    function verifica() {

        var achou = false;

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

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

        input.value = "" ;
        input.focus() ;
    }
</script>

Uma dica é deixar esse código mais legível também, ele está bem feio. E evita utilizar acentos em nomes de variáveis.

Obrigado pela ajuda Bruno.

Guilherme,

Mais duas coisas...

Cuidado com a tag <button>, faltou o sinal de maior (>):

<button> Compare o meu segredo </button>

Ahh, e tenta não usar caracteres especiais em nomes de variáveis no código, tipo posição... Deixa como posicao.

E você comentou que o Sublime não está reconhecendo seu código... Está salvo como .html?

Fábio

Fiz uma versão melhorzinha pra você tentar entender e ver o que pode melhorar:

<html>
    <head>
        <title>Compare o meu segredo!</title>
    </head>
    <body>
        <input type="text" />

        <button>Compare o meu segredo!</button>
    </body>
    <script>
        var segredos = [5, 7, 10, 2, 3];

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

        document.querySelector("button").onclick = function() {
            var achou = false;

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

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

            tentativa.value = "";
            tentativa.focus();
        }
    </script>
</html>

Contudo, ainda dá pra melhorar. Daria pra deixar a tag <script> dentro da tag <head>, por exemplo, porém seria necessário trabalhar diferente com as chamadas de funções para funcionar.