Módulo 6 · Aula 6.2 · Várias fases, as mesmas regras: eventos externos
| Carga horária | Dificuldade | Ferramenta | Competências |
|---|---|---|---|
| 8 h/a | ⭐⭐⭐ | GDevelop 5 | C2, C5 |
Objetivos de aprendizagem
- Fazer cada fase como uma cena (
Fase1,Fase2,Fase3). - Escrever as regras uma vez só, em eventos externos, e incluí-las em cada fase.
- Guardar os números de cada fase em variáveis de cena definidas no começo da cena.
- Ir para a próxima fase montando o nome da cena com uma conta.
Pré-requisitos
Aula 6.1. Aula 3.8 (cenas) e Aula 4.7 (grupos de eventos).
Materiais
Computador com o GDevelop; as fases desenhadas na Aula 6.1.
Conceitos
Uma cena por fase. Cada fase tem o seu desenho (cercas, castanhas, cães em lugares diferentes). Por isso cada uma é uma cena.
O problema da cópia. Se cada cena tiver uma cópia das regras, uma correção precisa ser feita três vezes, e um dia alguém esquece uma. É o mesmo problema da "porta única do dano" da Aula 4.5, agora entre cenas.
Eventos externos. Uma folha de eventos que não pertence a nenhuma cena. Fica no gerenciador do projeto, em Eventos externos. No Cajueiral ela se chama Regras e tem todos os grupos: Começo da fase, Jogador, Cão: máquina de estados, Castanhas e saída, Pego pelo cão, Placar.
Incluir (Link). Em cada cena de fase, um evento especial aparece como "Incluir eventos de Regras". Na hora de rodar, é como se as regras estivessem copiadas ali.
Números da fase. Antes do link, cada fase define as suas variáveis de cena no No começo da cena: Fase, Total (castanhas), VelPatrulha e VelPerseguicao. As regras usam esses nomes, sem saber em que fase estão.
Nome da cena montado. Para ir para a próxima fase: Alterar a cena com "Fase" + ToString(Fase + 1). Na Fase 1 dá "Fase2". Para recomeçar a mesma fase: "Fase" + ToString(Fase).
Exemplos
| Cena | Eventos próprios | Inclui |
|---|---|---|
| Fase1 | Fase = 1, Total = 5, VelPatrulha = 60, VelPerseguicao = 110 | Regras |
| Fase2 | Fase = 2, Total = 6, VelPatrulha = 70, VelPerseguicao = 125 | Regras |
| Fase3 | Fase = 3, Total = 7, VelPatrulha = 80, VelPerseguicao = 140 | Regras |
Tutorial passo a passo
Parte A. Criar as cenas (60 min)
- No gerenciador do projeto, crie
Fase1. Monte a fase 1 do seu papel (Aula 6.1). - Crie
Fase2eFase3. Dica: os objetos podem ser copiados de uma cena para outra (selecione na lista de objetos e use copiar e colar). - Em cada cena, crie as variáveis de cena
Fase,Total,Castanhas,VelPatrulhaeVelPerseguicao.
Parte B. Os eventos externos (90 min)
- No gerenciador do projeto, em Eventos externos, clique no + e dê o nome
Regras. - O GDevelop pergunta (ou mostra no topo da folha) a qual cena esses eventos estão associados, para saber quais objetos existem. Escolha
Fase1. - Passe para
Regrasos eventos de jogador, castanhas, saída e placar que você já tem, organizados em grupos (Aula 4.7).
Parte C. Incluir em cada fase (60 min)
- Na folha de eventos de
Fase1: um evento No começo da cena com os números da fase. - Logo abaixo, adicione o evento que inclui eventos externos (no botão Adicionar... no fim da folha, procure a opção de incluir/link) e escolha
Regras. Ele aparece como "Incluir eventos de Regras". - Repita em
Fase2eFase3, mudando só os números.
Parte D. Passar de fase (30 min)
- Em
Regras: colisão com a saída aberta → subeventoFase< 3 → Alterar a cena"Fase" + ToString(Fase + 1); subeventoFase= 3 → cena"Fim". - Visualizar a partir da
Fase1e passe pelas três.
Imagens
- Captura real, gerenciador do projeto com Cenas (Menu, Fase1, Fase2, Fase3, Fim) e Eventos externos (Regras):
recursos/imagens/gdevelop/captura-cajueiral-gerenciador.png
. - Captura real, folha da
Fase1com os números e "Incluir eventos de Regras":recursos/imagens/gdevelop/captura-cajueiral-fase1-eventos.png
.
Indicação da interface
| Item | Onde fica |
|---|---|
| Eventos externos | gerenciador do projeto (ícone ☰ no canto de cima), abaixo de Extensões |
| Evento de incluir | botão Adicionar... no fim da folha de eventos; o nome exato da opção não foi conferido para esta aula |
| Abrir os eventos incluídos | ícone de seta ao lado de "Incluir eventos de Regras" |
O código completo
Cena Fase1:
Comentário: Fase 1: O primeiro cercado. Só os números da fase ficam aqui; as regras são as mesmas.
No começo da cena → Alterar a variável Fase: definir como 1
Alterar a variável Total: definir como 5
Alterar a variável VelPatrulha: definir como 60
Alterar a variável VelPerseguicao: definir como 110
Incluir eventos de Regras
Eventos externos Regras, grupo "Castanhas e saída" (parte):
Jogador está em colisão com Saida
O número de Castanha vivendo na cena = 0
subevento: Fase + 1 > FaseLiberada → (salvar progresso, Aula 6.5)
subevento: A variável Fase < 3 → Alterar para a cena "Fase" + ToString(Fase + 1)
subevento: A variável Fase = 3 → Alterar a variável Resultado: definir como "venceu"
Alterar para a cena "Fim"Explicação do código
- O evento da fase vem antes do link: no primeiro quadro, as variáveis já estão definidas quando as regras rodam.
- Os eventos externos só podem usar objetos que existem em todas as cenas que os incluem. Por isso todas as fases têm os mesmos objetos (Jogador, Cao, Castanha, Cerca, Saida, Placar), só em lugares diferentes.
Resultado esperado (testado)
Teste automático no Cajueiral: a porteira aberta da Fase 1 levou à Fase2; a da Fase 2 levou à Fase3, que tinha 3 cães e perseguição a 140; a da Fase 3 levou ao Fim com "venceu".
Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
| Erro de objeto desconhecido nas Regras | alguma fase não tem o objeto | criar o objeto em todas as fases (mesmo nome) |
| A fase 2 usa a velocidade da fase 1 | esqueceu o evento de números na Fase2 | cada fase define os seus números |
| Vai para "Fase4" e trava | falta o subevento Fase = 3 | tratar a última fase à parte |
| A cena não troca | nome escrito diferente (fase2, Fase 2) | o nome montado precisa ser idêntico ao da cena |
Exercício guiado
Com Fase = 2, quanto vale "Fase" + ToString(Fase + 1)? E "Fase" + ToString(Fase) + "1"? (Resposta: "Fase3"; "Fase21".)
Desafio individual
Acrescente uma quarta fase sem mexer nas Regras, só criando a cena e mudando os números da Fase 3 para que ela leve à 4. O que mais precisou mudar?
Desafio avançado (opcional)
Em vez de Fase < 3, use uma variável global TotalDeFases para não ter o número 3 escrito nas Regras.
Critérios de avaliação
- Três cenas de fase com as mesmas regras incluídas.
- Números de cada fase definidos na própria cena.
- Passagem de fase funcionando até o fim.
Checklist de conclusão
Extensão
Uma receita usada em três festas diferentes é a mesma receita; o que muda é a quantidade. Escreva uma "receita de fase" do seu jogo com os ingredientes que mudam em cada fase.