3 - GameOver com eventos _ Alura Cursos Online de Tecnologia

5 Pages • 1,014 Words • PDF • 136 KB
Uploaded at 2021-09-24 08:28

This document was submitted by our user and they confirm that they have the consent to share it. Assuming that you are writer or own the copyright of this document, report to us by using this DMCA report button.


Digite aqui a busca

BUSCAR



Avançar

Game Over com eventos Nosso jogo está começando a criar forma, mas está faltando algo característico de todo jogo, o Game Over. Nós temos um tempo limite para o usuário digitar a frase, então ele deve decrescer, e quando o mesmo zerar, o usuário perde o jogo, não conseguindo mais digitar no campo. Vamos começar?

Contagem regressiva para digitação Assim que o usuário clicar no campo de digitação, a contagem regressiva deve iniciar, então primeiramente devemos detectar essa ação do usuário "entrar no campo". Será que podemos usar o evento click ? Clicando no campo, nós entramos nele, ok. Mas será que essa é a única maneira? Não, podemos entrar no campo utilizando a tecla TAB também. Pensando nisso, há um evento especí co para quando entramos dentro de um campo, que é o evento focus , que é quando o campo ganha o foco para ser utilizado. Logo, no main.js, podemos começar a implementar o nosso código:

campo.on("focus", function() {  });

Se queremos que o tempo decresça, temos que saber o seu valor. Para isso, na página principal.html, vamos envolver o tempo em uma tag , e colocar o id tempo‐digitacao :

    5 palavras      10 segundos 

Voltando ao main.js, vamos pegar o conteúdo do span e salvá-lo em uma variável:

var tempoRestante = $("#tempo‐digitacao").text();  campo.on("focus", function() {  });

Feito isso, temos que implementar a lógica. A cada segundo que se passar, temos que subtrair 1 do nosso tempo restante. Para tal, vamos utilizar a função setInterval do JavaScript, que faz com que uma determinada ação (passada como primeiro parâmetro) seja executada em um intervalo de tempo (passado como segundo parâmetro, no nosso caso, 1 segundo, ou 1000 milissegundos):

var tempoRestante = $("#tempo‐digitacao").text();  campo.on("focus", function() {      setInterval(function() {        }, 1000);  });

Dentro o setInterval podemos subtrair 1 do nosso tempo restante a cada segundo que passe, logo:

var tempoRestante = $("#tempo‐digitacao").text();  campo.on("focus", function() {      setInterval(function() {          tempoRestante‐‐;      }, 1000);  });

Falta agora atualizarmos o contador com o tempo restante, bem semelhante ao que já zemos anteriormente:

var tempoRestante = $("#tempo‐digitacao").text();  campo.on("focus", function() {      setInterval(function() {          tempoRestante‐‐;          $("#tempo‐digitacao").text(tempoRestante);      }, 1000);  });

Perfeito, nosso tempo já está decrescendo, só que o mesmo ainda não in uencia em nada no jogo, já que o usuário consegue car digitando mesmo com o tempo zerado. Vamos então desabilitar o campo para que o usuário não consiga

mais digitar nada quando o tempo zerar. A textarea possui um atributo disabled , que faz com que não consigamos digitar nada na mesma (justamente o que queremos). Então o que queremos é que quando o tempo chegar a 0, o JavaScript vai e "coloca" o atributo disabled na textarea . Como queremos adicionar um atributo, o jQuery nos auxilia disponibilizando a função attr .

Essa função funciona de maneira semelhante à função text , podendo pegar o valor de um atributo, ou modi cá-lo. Por exemplo, para pegar o valor do atributo rows do nosso campo, fazemos:

var campo = $(".campo‐digitacao");  campo.attr("rows");

E para modi car o mesmo, passamos mais um parâmetro para a função, que é o novo valor do atributo, por exemplo:

var campo = $(".campo‐digitacao");  campo.attr("rows", 500);

Só que o atributo disabled não tem nenhum valor, só queremos colocá-lo na tag. Nesse caso, nós temos que informar isso passando o valor true (verdadeiro) para a função, assim estaremos "habilitando" o atributo:

var tempoRestante = $("#tempo‐digitacao").text();  campo.on("focus", function() {      setInterval(function() {          tempoRestante‐‐;          $("#tempo‐digitacao").text(tempoRestante);          campo.attr("disabled", true);      }, 1000);  });

Como queremos desabilitar o campo somente quando o tempo chegar a 0, vamos envolver essa linha em uma condição if :

var tempoRestante = $("#tempo‐digitacao").text();  campo.on("focus", function() {      setInterval(function() {          tempoRestante‐‐;          $("#tempo‐digitacao").text(tempoRestante);          if (tempoRestante 
3 - GameOver com eventos _ Alura Cursos Online de Tecnologia

Related documents

5 Pages • 1,014 Words • PDF • 136 KB

20 Pages • 745 Words • PDF • 1.3 MB

5 Pages • 41 Words • PDF • 423.1 KB

5 Pages • 1,120 Words • PDF • 531 KB

32 Pages • 1,110 Words • PDF • 2.9 MB

456 Pages • 213,499 Words • PDF • 34.7 MB

13 Pages • 2,624 Words • PDF • 3 MB

2 Pages • 178 Words • PDF • 87.2 KB

72 Pages • 15,047 Words • PDF • 1.7 MB

179 Pages • 45,559 Words • PDF • 2.4 MB

45 Pages • 2,547 Words • PDF • 5.2 MB