add templates #5
Reference in New Issue
Block a user
Delete Branch "feature/template"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Resumo
Adiciona duas atividades de demonstração (
ExemploeExemplo 2) à plataforma Decoda, projetadas como material de onboarding para novos desenvolvedores. Cada atividade exibe o fluxo arquitetural completo: instanciação Blockly + Phaser, ponte via JS-Interpreter, e ciclo de Sucesso/Falha.Atividade: Exemplo (
/atividades/programacao/exemplo)Grade 5×5. O aluno move o logo da Decoda até o alvo verde usando blocos de movimento e repetição.
Blocos disponíveis:
repetir N vezes,número,mover para DIREITA,mover para BAIXOLimite: 6 blocos — força o uso de laços em vez de repetição manual
Solução ótima:
repetir 4 { moverDireita }+repetir 4 { moverBaixo }Sucesso: personagem alcança a célula (4,4) →
stopInternal()→handleValidation()Falha: personagem sai dos limites da grade →
stopInternal()→handleFailure()Ensinamentos arquiteturais embutidos no código:
ui/constants.js— como referenciar assets de/publicvia URL direta (semimportde módulo)ui/layout.js— separação entre lógica de jogo e construção visual da cenagame.js—preload+this.load.image()para carregar ologo.pngAtividade: Exemplo 2 (
/atividades/programacao/exemplo2)Display de terminal minimalista. O aluno usa blocos de texto para imprimir a frase exata
"SOBERANIA DIGITAL".Blocos disponíveis:
imprimir,texto(literal),juntar textoLimite: 4 blocos — comporta tanto a solução simples (
imprimir "SOBERANIA DIGITAL") quanto a com concatenaçãoValidação:
sceneRef.textoAtual === "SOBERANIA DIGITAL"(comparação exata)Ensinamentos arquiteturais embutidos:
hooks/setupExemplo2API.js— diferença entrecreateNativeFunction(síncrona) ecreateAsyncFunction(assíncrona com callback)validators.js— como ler estado da cena (sceneRef) no momento da validaçãoEstrutura de arquivos
Ambas as atividades seguem o padrão arquitetural existente:
exemplo(2)/
├── ExemploGame(2).jsx # GameStateProvider → GameBase → BlocklyEditor
├── game.js # Cena Phaser + createGame factory
├── blocks/blocks.js # defineBlocks + defineGenerators + toolbox
├── hooks/setup*API.js # Ponte JS-Interpreter ↔ Phaser
├── validation/validators.js # extends BaseGameValidator
├── config/config.js # Fases, maxBlocks, mensagens
└── ui/
├── constants.js # Assets, dimensões, cores
└── layout.js # Funções de construção visual (sem lógica de jogo)
Checklist
gameEventBus.gameSuccess()gameEventBus.gameFailure(reason)onSuccess/onFailurecom animações antes do modalmaxBlocksconfigurado em ambas as atividadesApp.jsxui/(cenas limpas e legíveis)