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.9 · Listas: guardar os tempos de cada vitória

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

Objetivos de aprendizagem

  1. Criar uma variável do tipo array (lista).
  2. Adicionar um valor no fim da lista.
  3. Ler o tamanho da lista e o último valor.
  4. Conhecer as variáveis estruturadas (com campos dentro).

Pré-requisitos

Aulas 3.5 (variáveis) e 3.9 (cenas e variáveis globais).

Materiais

Computador com o GDevelop.

Conceitos

Array (lista). Uma variável que guarda vários valores em fila, numerados a partir de 0. A Trilha guarda o tempo de cada vitória em Tempos: [48, 41, 39]. Tempos[0] é 48, Tempos[2] é 39.

Global. Tempos é variável global para sobreviver à troca de cena (Jogo → Fim → Jogo). Ela só some quando o jogo é fechado; por isso a tela final diz "Vitórias nesta sessão".

Adicionar valor à variável de array. Ação que põe um número no fim da lista. A Trilha guarda round(TimerElapsedTime("Fase")): o tempo da fase em segundos inteiros.

Tamanho. VariableChildCount(Tempos) diz quantos itens há. O último está na posição tamanho − 1 (porque começa em 0): Tempos[VariableChildCount(Tempos) - 1].

Estrutura. Outro tipo de variável, com campos nomeados: Recorde.Tempo, Recorde.Castanhas. Lista é "vários do mesmo"; estrutura é "uma coisa com várias partes". As duas podem ser combinadas: uma lista de estruturas.

Exemplos

DadoTipo
tempos de cada vitóriaarray de números
itens da mochilaarray de textos
ficha do jogador (nome, nível, vidas)estrutura
ranking (nome e pontos de cada um)array de estruturas

Tutorial passo a passo

Parte A. A lista (40 min)

  1. Gerenciador do projeto → Variáveis globais → nova variável Tempos, tipo Array, sem itens.
  2. Também globais: Resultado (texto) e UltimasCastanhas (número).

Parte B. Guardar o tempo (40 min)

  1. No No começo da cena de Jogo, reinicie o temporizador "Fase".
  2. No evento da porteira: Resultado = "venceu"; UltimasCastanhas = Castanhas; Adicionar valor à variável de array Tempos com round(TimerElapsedTime("Fase")); Trocar a cena para "Fim".
  3. No evento de Vidas ≤ 0: Resultado = "perdeu"; UltimasCastanhas = Castanhas; trocar para "Fim" (sem guardar tempo).

Parte C. Mostrar (60 min)

  1. Na cena Fim, o texto Mensagem quando venceu: "Você chegou na porteira!" + NewLine() + "Castanhas: " + ToString(UltimasCastanhas) + NewLine() + "Tempo: " + ToString(Tempos[VariableChildCount(Tempos) - 1]) + " s" + NewLine() + "Vitórias nesta sessão: " + ToString(VariableChildCount(Tempos))
  2. Visualizar. Vença duas vezes seguidas e confira "Vitórias nesta sessão: 2".

Imagens

  • Captura real, grupo "Placar e fim" com a ação de adicionar à lista: recursos/imagens/gdevelop/captura-trilha-eventos-5.png.

Indicação da interface

ItemOnde fica
Variáveis globaisgerenciador do projeto
Tipo Arraymenu de tipo ao lado do nome da variável
Ação de adicionar valor à listaações de variáveis (pesquisar "matriz" ou "array"); na folha aparece "Adiciona o valor ... à variável de matriz"

O código completo

Comentário: Chegou na porteira: venceu. Guarda o tempo numa lista (array) de tempos.
Jogador está em colisão com Porteira   → Alterar a variável Resultado: definir como "venceu"
                                         Alterar a variável UltimasCastanhas: definir como Castanhas
                                         Adiciona o valor round(TimerElapsedTime("Fase")) à variável de matriz Tempos
                                         Alterar para a cena "Fim"
A variável Vidas ≤ 0                    → Alterar a variável Resultado: definir como "perdeu"
                                         Alterar a variável UltimasCastanhas: definir como Castanhas
                                         Alterar para a cena "Fim"

Cena Fim:
A variável Resultado = "venceu"        → Alterar o texto de Mensagem: "Você chegou na porteira!" ...
                                         "Tempo: " + ToString(Tempos[VariableChildCount(Tempos) - 1]) + " s" ...
                                         "Vitórias nesta sessão: " + ToString(VariableChildCount(Tempos))
A variável Resultado = "perdeu"        → Alterar o texto de Mensagem: "As vidas acabaram." ...

(Na folha, o GDevelop em português chama o array de "variável de matriz". Os textos da cena Fim estão resumidos.)

Explicação do código

  • A derrota não guarda tempo, então o tamanho da lista conta só vitórias.
  • UltimasCastanhas existe porque Castanhas é variável da cena Jogo e some ao trocar de cena.

Resultado esperado (testado)

Teste automático: ao chegar na porteira, Tempos passou a ter 1 item e a tela final mostrou castanhas, "Tempo: N s" e "Vitórias nesta sessão: 1"; numa derrota em seguida, a lista continuou com 1 item e a mensagem começou com "As vidas acabaram".

Problemas comuns

SintomaCausaSolução
A lista volta a zero a cada partidaTempos criada como variável de cenacriar em Variáveis globais
Mostra 0 no tempoleu Tempos[VariableChildCount(Tempos)] (passou do fim)subtrair 1
"Castanhas: 0" na tela finalusou Castanhas na cena Fimusar UltimasCastanhas
Tempo com muitas casas decimaisfaltou roundround(TimerElapsedTime("Fase"))

Exercício guiado

Tempos = [52, 47, 44, 50]. Quanto valem VariableChildCount(Tempos), Tempos[0] e o último? (Resposta: 4, 52 e 50.)

Desafio individual

Mostre na tela final o melhor tempo da sessão. Dica: guarde também uma variável global Recorde e atualize quando o tempo novo for menor.

Desafio avançado (opcional)

Mostre os três últimos tempos, um por linha, usando Tempos[VariableChildCount(Tempos) - 2] e - 3 com cuidado para não ler posições que não existem.

Critérios de avaliação

  • Lista global recebendo um valor por vitória.
  • Tela final lendo o último valor e o tamanho.

Checklist de conclusão

Extensão

Anote o tempo de 5 colegas na Trilha. Calcule a média e a mediana. Qual representa melhor a turma?