Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Entrada de dados pelo input

Olá, tenho uma pequena dúvida sobre minha função

Não estou conseguindo fazer, após a 1ª tentativa, o usuário digitar novamente um número. Ele entra no looping e mostra a mensagem "Errou" 3 vezes seguidas. Era pra aparecer 1 vez a cada tentativa do usuário. Se eu fizer com a entrada de dados pelo 'prompt' funciona, mas gostaria de seguir a ideia do input.

Onde tem o "???" é onde imagino que tenha que colocar algum trecho. (Foi onde coloquei o prompt para testar e funcionou.

var segredos = [];

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

        function verifica() {            

            var acerto = false;

            for (var chance = 1; chance <= 3; chance++) {

                ???

                for (var indice = 0; indice < segredos.length; indice++) {

                    if (input.value == segredos[indice]) {

                        alert("Você acertou.");
                         acerto = true;
                         chance = 4;
                         break;                         
                    } 
                }                  

                if (acerto == false) {
                    for (var tst = 0; tst < 1; tst++) {
                        alert("Errou.");    
                        alert("Você usou sua " + chance + " chance.");    
                    }
                }
                input.value = "";
                input.focus();
            }

            document.write("Fim");                        
        }
1 resposta
solução!

Oi Letícia, tudo bem? Olha, pelo que estou vendo no seu código, o problema é esse loop que faz para exibir a mensagem de que o usuário errou.

Note que toda vez que ele pôe um número, você itera o laço de um a 3. Verifica se ele acertou ou errou com outro laço (o que vasculha os numeros em segredo), e depois um if que tem outro laço.

Como resolver? Bom, você pode remover o laço que exibe a mensagem de erro do usuário e apenas usar o if. Você pode fazer esse laço de changes de outra forma, que não usando laço.

O problema ocorre porque toda vez que chamar a função verifica, ele vai executar as três chances do jogo, entende?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software