Módulo 7 · Aula 7.2 · Diálogos com escolhas
| Carga horária | Dificuldade | Ferramenta | Competências |
|---|---|---|---|
| 6 h/a | ⭐⭐⭐ | GDevelop 5 | C1, C2, C3 |
Objetivos de aprendizagem
- Desenhar um diálogo como mapa de etapas, com setas e escolhas.
- Programar o diálogo com uma variável de texto
Passo(máquina de estados, como o cão da Aula 6.3). - Evitar que um aperto de tecla pule duas etapas.
- Guardar os dados dos personagens numa lista de estruturas e ler com
Pedidos[Pedido].nome.
Pré-requisitos
Aula 7.1 (roteiro). Aula 6.3 (máquina de estados). Aula 4.9 (listas e estruturas).
Materiais
Computador com o GDevelop; A Feira do Troco aberta; o roteiro da Aula 7.1.
Conceitos
Mapa de diálogo. Cada caixa é uma etapa (o que aparece na tela); cada seta diz o que faz passar para a próxima.
intro1 --confirmar--> intro2 --tecla 1 ou clique--> (ComRelogio = 1) --+
--tecla 2 ou clique--> (ComRelogio = 0) --+--> intro3 --confirmar--> ola
ola --confirmar--> troco --entregar--> resposta --confirmar--> ola (próximo freguês) ou FimA escolha muda duas coisas: a resposta de Seu Zé e o jeito de jogar (com ou sem relógio). Depois as duas linhas se juntam de novo em intro3. Assim a escolha tem efeito sem precisar escrever duas histórias inteiras.
Passo, uma variável de texto. Em vez de várias variáveis "está no começo?", "está escolhendo?", uma só guarda o nome da etapa: "intro1", "intro2", "ola", "troco", "resposta". Cada evento começa com "A variável Passo = ...". É a mesma ideia do Estado do cão no Cajueiral.
O aperto que pula duas etapas. O GDevelop roda os eventos de cima para baixo, todos no mesmo quadro. Se o evento de intro1 muda para intro2 e o de intro2 também aceita Espaço, um aperto só pode pular as duas. A solução da Feira:
- quem aperta só pede para avançar (
Confirmou = 1); - o evento da etapa atende e zera o pedido (
Confirmou = 0) na mesma hora.
Lista de estruturas. Os cinco fregueses estão numa variável de cena Pedidos, do tipo lista (array). Cada item é uma estrutura com os campos id, nome, item, preco, pago, ola e obrigado. A variável Pedido diz qual é o freguês da vez (0 a 4). Então:
Pedidos[Pedido].nomeé o nome do freguês da vez;Pedidos[Pedido].pago - Pedidos[Pedido].precoé o troco certo.
Um evento só serve para os cinco fregueses. Para pôr um sexto, basta acrescentar um item na lista.
Exemplos
| Situação | Etapas |
|---|---|
| A Feira do Troco | intro1, intro2 (escolha), intro3, e o ciclo ola → troco → resposta |
| conversa com um guarda que só deixa passar quem responde certo | pergunta, certo, errado |
| loja do jogo | olhar, comprar, sem dinheiro |
Tutorial passo a passo
Parte A. Ler a Feira (60 min)
- Abra a cena Feira e a aba Feira (Eventos).
- Ache os grupos Confirmar e Roteiro com escolha (capturas 2 e 3).
- Desenhe no papel o mapa de diálogo da Feira, conferindo cada seta com um evento.
- Abra o painel de variáveis da cena e veja
Pedidoscom seus cinco itens. Clique para abrir um item e veja os campos.
Parte B. Montar o seu diálogo (150 min)
Em um projeto novo, com um objeto de texto Fala e dois textos OpcaoA e OpcaoB:
- Crie a variável de cena
Passo(texto) com valor"inicio"e a variávelConfirmou(número) com 0. - Evento: A tecla
"Space"foi pressionada →Confirmou= 1. - Evento:
Passo="inicio"eConfirmou= 1 →Confirmou= 0;Passo="pergunta"; texto deFala= sua pergunta; MostrarOpcaoAeOpcaoB. - Evento:
Passo="pergunta"e A tecla"Num1"foi pressionada →Passo="respostaA"e uma fala. - Repita para a opção B.
- Junte as duas linhas: um evento para
respostaAe outro pararespostaBque, ao confirmar, levam para o mesmo"fim". - Visualizar. Aperte Espaço várias vezes rápido: o diálogo pula etapas? Se pular, falta zerar
Confirmouem algum lugar.
Parte C. Dados em lista (60 min)
- Crie uma variável de cena
Falasdo tipo lista com três textos. - Uma variável
Linha= 0. Ao confirmar: texto deFala=Falas[Linha]eLinha+ 1. - O que acontece quando
Linhapassa de 2? Faça uma condição para ir para o"fim".
Imagens
../../../recursos/imagens/gdevelop/captura-feira-eventos-2.png
: grupo Confirmar e começo do roteiro.../../../recursos/imagens/gdevelop/captura-feira-eventos-3.png
: a escolha (teclas 1 e 2, clique nas opções) e a junção em intro3.../../../recursos/imagens/gdevelop/captura-feira-eventos-4.png
: o freguês chega com os dados de Pedidos[Pedido].../../../recursos/imagens/gdevelop/feira-tela-contraste.png
: a escolha na tela.
Indicação da interface
| Item | Onde fica | Texto que aparece no evento |
|---|---|---|
| comparar variável de texto | condições, Variáveis | "A variável Passo = "troco"" |
| tecla | condições, Teclado | "A tecla "Num1" foi pressionada" |
| clique num objeto | condições: O cursor/toque está sobre + Botão do mouse liberado | "O cursor/toque está sobre OpcaoA" e "O toque ou o botão do mouse "Left" foi solto" |
| mostrar e ocultar | ações do objeto | "Mostrar OpcaoA", "Ocultar OpcaoA" |
| variável lista ou estrutura | menu de tipo ao lado do nome da variável (Aula 4.9); o GDevelop em português chama a lista de "matriz" | (montar uma lista de estruturas na tela de variáveis não foi conferido passo a passo nesta versão; o professor deve criar uma antes da aula) |
O código completo
O roteiro da Feira, resumido (grupos Confirmar e Roteiro com escolha):
Tecla de confirmar foi pressionada → Confirmou = 1
Cursor sobre Caixa e botão solto e Passo ≠ "troco" → Confirmou = 1
Passo = "intro1" e Confirmou = 1 → Passo = "intro2"; Confirmou = 0; Fala = pergunta; Mostrar OpcaoA e OpcaoB
Passo = "intro2"
tecla Num1 (ou clique em OpcaoA) → Escolha = 1
tecla Num2 (ou clique em OpcaoB) → Escolha = 2
Escolha = 1 → ComRelogio = 1; Fala = "Eita, gosto de gente corajosa!..."
Escolha = 2 → ComRelogio = 0; Fala = "Muito bem. Conta com calma..."
Escolha > 0 → Passo = "intro3"; Ocultar as opções; Confirmou = 0
Passo = "intro3" e Confirmou = 1 → Confirmou = 0; NovoFregues = 1
NovoFregues = 1 → Passo = "ola"; Cliente com a animação Pedidos[Pedido].id;
Nome = Pedidos[Pedido].nome; Fala = Pedidos[Pedido].ola + ...Explicação do código
- A tecla de confirmar não é fixa: é
NomesTecla[TeclaIndice], uma lista com"Space"e"Return". Isso é acessibilidade (Aula 7.6). - Em
intro2, Espaço não faz nada: a única saída é escolher. O pedidoConfirmoufica guardado, mas é zerado quando a escolha acontece, para não pularintro3. NovoFreguesé outro "pedido": quem termina um freguês pede o próximo, e o grupo Freguês atende. Assim a chegada do freguês fica escrita num lugar só.- A animação do cliente tem o nome do
id("rita","joao"...). Trocar a animação pelo nome que vem da lista evita cinco eventos iguais.
Resultado esperado
Mapa de diálogo da Feira no papel e um diálogo seu com uma escolha que muda algo e depois se junta, sem pular etapas.
Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
| um Espaço pula duas falas | dois eventos aceitam a mesma tecla no mesmo quadro | usar o pedido Confirmou e zerar ao atender |
| o diálogo trava | nenhum evento aceita a etapa atual (nome escrito diferente, "Intro1" e "intro1") | conferir maiúsculas e minúsculas; texto é comparado letra por letra |
Pedidos[Pedido].nome mostra 0 ou vazio | campo escrito diferente na lista, ou Pedido fora da lista | conferir o nome do campo; Pedido vai de 0 a 4 |
| clique na opção não funciona | opção escondida ou em outra camada sem o cursor | conferir se a opção foi mostrada |
Exercício guiado
Na Feira, se a lista Pedidos tiver 5 itens, qual o valor de Pedido no último freguês? Por que a condição de ir para o Fim é Pedido >= 5 e não Pedido = 4? (Resposta: 4, porque a lista começa no 0. A condição é conferida depois de somar 1, então quando Pedido vira 5 não há mais freguês.)
Desafio individual
Acrescente um sexto freguês na lista Pedidos da sua cópia da Feira, com uma animação nova para ele. Mude o número de fregueses nos eventos onde aparece 5.
Desafio avançado (opcional)
Faça uma segunda escolha no meio do jogo (por exemplo, um freguês pede fiado) que muda a frase do fim.
Critérios de avaliação
- Mapa de diálogo igual ao código.
- Escolha com efeito real e caminhos que se juntam.
- Nenhuma etapa pulada com um aperto.
Checklist de conclusão
Extensão
Escreva o mapa de diálogo de uma conversa do dia a dia (pedir algo na cantina) com duas escolhas. Quantas etapas ficaram?