Pular para o conteúdo
Jogos Digitais
Nesta página
  1. Objetivos de aprendizagem
  2. Pré-requisitos
  3. Materiais
  4. Conceitos
  5. Exemplos
  6. Tutorial passo a passo
  7. Imagens
  8. Indicação da interface
  9. O código completo
  10. Explicação do código
  11. Resultado esperado (testado)
  12. Problemas comuns
  13. Exercício guiado
  14. Desafio individual
  15. Desafio avançado (opcional)
  16. Critérios de avaliação
  17. Checklist de conclusão
  18. Extensão

Módulo 4 · Aula 4.6 · Estados do jogo e pausa

Carga horáriaDificuldadeFerramentaCompetências
8 h/a⭐⭐⭐GDevelop 5 (gdevelop.io)C2, C5

Objetivos de aprendizagem

  1. Guardar o estado do jogo numa variável de texto ("jogando", "pausado").
  2. Pausar o jogo inteiro com a escala de tempo.
  3. Mostrar e esconder uma camada inteira.
  4. Entender e corrigir o erro clássico do "liga e desliga no mesmo quadro".

Pré-requisitos

Aulas 4.2 (camadas) e 4.5.

Materiais

Computador com o GDevelop.

Conceitos

Estado. Uma palavra que diz em que situação o jogo está. A Trilha usa Estado = "jogando" ou "pausado". Outros jogos têm "menu", "cutscene", "chefao". Cada evento pode perguntar o estado antes de agir.

Escala de tempo. Número que multiplica a passagem do tempo. 1 = normal; 0 = parado; 0,5 = câmera lenta. Com 0, forças, gravidade, animações e temporizadores param. Os eventos continuam rodando, por isso o teclado ainda funciona para despausar.

Mostrar e ocultar camada. A camada Pausa tem um retângulo escuro e o texto "PAUSADO". Começa oculta e aparece só na pausa.

O erro do liga-desliga. A primeira ideia é escrever dois eventos:

[P] acabou de ser pressionada + Estado = "jogando" → Estado = "pausado"
[P] acabou de ser pressionada + Estado = "pausado" → Estado = "jogando"

Parece certo, mas não funciona. No mesmo quadro o primeiro muda para "pausado" e o segundo, logo abaixo, vê "pausado" e volta para "jogando". O jogo nunca pausa. A solução da Trilha: o teclado só pede a troca (TrocarPausa = 1). Dois eventos olham o pedido; o primeiro que agir zera TrocarPausa, e o segundo já não vê o pedido.

Exemplos

JogoEstados
Trilha da Serrajogando, pausado
jogos de lutaescolhendo personagem, lutando, fim de round
jogos de RPGandando, conversando, batalha, menu

Tutorial passo a passo

Parte A. A camada da pausa (40 min)

  1. Crie a camada Pausa acima de Interface.
  2. Nela, um texto grande "PAUSADO" e uma linha menor "Aperte P para continuar". Se quiser, um retângulo escuro meio transparente atrás.
  3. No No começo da cena: Estado = "jogando" e Ocultar camada "Pausa".

Parte B. A versão errada, de propósito (40 min)

  1. Escreva os dois eventos da seção Conceitos, com Escala de tempo 0 e Mostrar camada no primeiro, e escala 1 e Ocultar camada no segundo.
  2. Visualizar e aperte [P]. Anote o que acontece.

Parte C. A versão certa (60 min)

  1. Apague os dois eventos. Crie:
    • [P] acabou de ser pressionada → TrocarPausa = 1;
    • TrocarPausa = 1 e Estado = "jogando" → Estado = "pausado"; escala 0; Mostrar camada "Pausa"; TrocarPausa = 0;
    • TrocarPausa = 1 e Estado = "pausado" → Estado = "jogando"; escala 1; Ocultar camada "Pausa"; TrocarPausa = 0.
  2. Visualizar. Pause no meio de um pulo e confira que o jogador fica parado no ar.

Imagens

  • Captura real, grupo "Pausa" com os três eventos: recursos/imagens/gdevelop/captura-trilha-eventos-1.png.
  • Captura real, jogo pausado com a camada Pausa visível: recursos/imagens/gdevelop/trilha-tela-pausa.png.

Indicação da interface

ItemOnde fica
Tecla acabou de ser pressionadacondições de teclado (pesquisar "acabou de ser")
Variável de textoao criar a variável, escolher o tipo texto; na condição, comparar com aspas
Escala de tempoações, grupo de tempo (pesquisar "escala")
Mostrar camada / Ocultar camadaações, grupo de camadas e câmeras

O código completo

Grupo "Pausa":
Comentário: P pede a troca; os dois eventos abaixo atendem o pedido uma única vez.
Tecla "p" acabou de ser pressionada        → Alterar a variável TrocarPausa: definir como 1
A variável TrocarPausa = 1
A variável Estado = "jogando"              → Alterar a variável Estado: definir como "pausado"
                                             Alterar a escala de tempo para 0
                                             Mostrar a camada "Pausa"
                                             Alterar a variável TrocarPausa: definir como 0
A variável TrocarPausa = 1
A variável Estado = "pausado"              → Alterar a variável Estado: definir como "jogando"
                                             Alterar a escala de tempo para 1
                                             Ocultar a camada "Pausa"
                                             Alterar a variável TrocarPausa: definir como 0

Explicação do código

  • Zerar TrocarPausa dentro do evento que agiu é o que impede o segundo de agir no mesmo quadro.
  • "Acabou de ser pressionada" vale só no primeiro quadro do aperto. Com "está pressionada", segurar [P] pausaria e despausaria sem parar.

Resultado esperado (testado)

Teste automático: [P] mudou Estado para "pausado", a escala de tempo foi para 0, a camada Pausa ficou visível e o jogador não se mexeu com a seta apertada; outro [P] voltou tudo ao normal.

Problemas comuns

SintomaCausaSolução
[P] não faz nadao erro do liga-desligausar TrocarPausa
O jogo pausa e despausa sozinhousou "está pressionada"usar "acabou de ser pressionada"
Pausado mas a camada não aparecenome da camada diferenteconferir maiúsculas: "Pausa"
Pausa já começa ligadaesqueceu de ocultar no começo da cenaOcultar camada no começo
Despausar não funcionacolocou condição de estado na leitura da teclaa leitura da tecla não deve depender do estado

Exercício guiado

Com escala de tempo 0,5, um temporizador marca quanto depois de 4 segundos de relógio? (Resposta: 2 segundos.)

Desafio individual

Na tela de pausa, faça [R] reiniciar a fase (ação Trocar a cena para a própria cena Jogo). Cuidado: volte a escala para 1 antes.

Desafio avançado (opcional)

Crie um estado "contagem": ao começar a fase, mostra 3, 2, 1 e só então muda para "jogando". Os controles do jogador só funcionam em "jogando".

Critérios de avaliação

  • Pausa funcionando com camada própria.
  • Registro no diário do erro do liga-desliga e da solução.

Checklist de conclusão

Extensão

Desenhe o diagrama de estados de um semáforo ou de uma máquina de lavar: bolinhas para os estados e setas para o que faz trocar.