2
respostas

complemento da atividade do adivinha, ele executa normalmente, mas ele não me da chance tentar novamente, ele emite os 3 alertas seguidos, não consegui compreender com as respostas do forum.

2 respostas

Olá, Lucas, tudo bem?

Muito legal que você quis complementar a atividade!! Continue assim, avançando seus conhecimentos!

Mas antes de partir para sua dúvida, uma dica: quando você for escrever código aqui no fórum, você deve deixá-lo dentro de um bloco de código, senão não será possível visualizá-lo. O bloco de código começa com três crases seguidas e termina com mais três crases seguidas, assim:

Print de bloco de código

Por exemplo, um código HTML:

Exemplo de código HTML

Note que você pode escrever o nome da linguagem junto com as três primeiras crases para realçar o código!

Você também pode clicar no ícone </> na barra de ícones para gerar um bloco de de código.

Agora vamos resolver sua dúvida!

Bem, acredito que o seu programa dá apenas 3 tentativas para o usuário e depois disso ele não pode mais adivinhar, certo?

Analisando seu código da função verifica:

  function verifica() {

    while (tentativas <= 3) {
      if (input.value == numeroPensado) {

        alert("você acertou");
        document.write("você conseguiu!!");
        break;
      } else {
        alert("você errou!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        input.value = "";
        input.facus;

      }
      tentativas++;
    }
  }

O problema é que você está executando o while quando a função verifica é chamada assim que o usuário clica no botão. O bloco while executa várias vezes até que a condição seja quebrada, e por isso a mensagem de erro aparece 3 vezes seguidas assim que o usuário erra!

Então, na verdade, não há necessidade de usar o while. E sem o while, precisamos tirar o comando break;, senão haverá um erro no console. Seu código ficaria assim:

  function verifica() {

    if (input.value == numeroPensado) {

      alert("você acertou");
      document.write("você conseguiu!!");
      // break;
    } else {
      alert("você errou!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
      input.value = "";
      input.facus;

    }
    tentativas++;
  }

Mas desse jeito não estamos verificando se o usuário já alcançou o número máximo de tentativas! Onde podemos fazer essa verificação então?

Uma coisa que podemos fazer é "acabar" com o jogo escrevendo diretamente na tela que o usuário perdeu, caso o número de tentativas atinja o máximo. Então, depois da instrução tentativas++, podemos fazer essa verificação com um if:

  function verifica() {

    if (input.value == numeroPensado) {

      alert("você acertou");
      document.write("você conseguiu!!");
      // break;
    } else {
      alert("você errou!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
      input.value = "";
      input.facus;

    }
    tentativas++;

    if (tentativas > 3) {
      document.write("Você perdeu :(");
    }
  }

Isso funciona, mas na verdade existem outras formas de fazer! Você pode programar de outra forma e fazer com que, em vez de "acabar" com o jogo usando document.write, você mostra um alerta dizendo que a pessoa não tem mais tentativas, quando ela clicar no botão. Deixo como exercício!

Espero ter te ajudado! Qualquer dúvida estaremos aqui para te auxiliar. Continue assim e bons estudos! :)