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
  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 7 · Aula 7.2 · Diálogos com escolhas

Carga horáriaDificuldadeFerramentaCompetências
6 h/a⭐⭐⭐GDevelop 5C1, C2, C3

Objetivos de aprendizagem

  1. Desenhar um diálogo como mapa de etapas, com setas e escolhas.
  2. Programar o diálogo com uma variável de texto Passo (máquina de estados, como o cão da Aula 6.3).
  3. Evitar que um aperto de tecla pule duas etapas.
  4. 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 Fim

A 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çãoEtapas
A Feira do Trocointro1, intro2 (escolha), intro3, e o ciclo ola → troco → resposta
conversa com um guarda que só deixa passar quem responde certopergunta, certo, errado
loja do jogoolhar, comprar, sem dinheiro

Tutorial passo a passo

Parte A. Ler a Feira (60 min)

  1. Abra a cena Feira e a aba Feira (Eventos).
  2. Ache os grupos Confirmar e Roteiro com escolha (capturas 2 e 3).
  3. Desenhe no papel o mapa de diálogo da Feira, conferindo cada seta com um evento.
  4. Abra o painel de variáveis da cena e veja Pedidos com 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:

  1. Crie a variável de cena Passo (texto) com valor "inicio" e a variável Confirmou (número) com 0.
  2. Evento: A tecla "Space" foi pressionada → Confirmou = 1.
  3. Evento: Passo = "inicio" e Confirmou = 1 → Confirmou = 0; Passo = "pergunta"; texto de Fala = sua pergunta; Mostrar OpcaoA e OpcaoB.
  4. Evento: Passo = "pergunta" e A tecla "Num1" foi pressionada → Passo = "respostaA" e uma fala.
  5. Repita para a opção B.
  6. Junte as duas linhas: um evento para respostaA e outro para respostaB que, ao confirmar, levam para o mesmo "fim".
  7. Visualizar. Aperte Espaço várias vezes rápido: o diálogo pula etapas? Se pular, falta zerar Confirmou em algum lugar.

Parte C. Dados em lista (60 min)

  1. Crie uma variável de cena Falas do tipo lista com três textos.
  2. Uma variável Linha = 0. Ao confirmar: texto de Fala = Falas[Linha] e Linha + 1.
  3. O que acontece quando Linha passa 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

ItemOnde ficaTexto que aparece no evento
comparar variável de textocondições, Variáveis"A variável Passo = "troco""
teclacondições, Teclado"A tecla "Num1" foi pressionada"
clique num objetocondiçõ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 ocultarações do objeto"Mostrar OpcaoA", "Ocultar OpcaoA"
variável lista ou estruturamenu 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 pedido Confirmou fica guardado, mas é zerado quando a escolha acontece, para não pular intro3.
  • 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

SintomaCausaSolução
um Espaço pula duas falasdois eventos aceitam a mesma tecla no mesmo quadrousar o pedido Confirmou e zerar ao atender
o diálogo travanenhum 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 vaziocampo escrito diferente na lista, ou Pedido fora da listaconferir o nome do campo; Pedido vai de 0 a 4
clique na opção não funcionaopção escondida ou em outra camada sem o cursorconferir 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?