Capítulo 19: Arquitetura de Software e Gamificação Corporativa

🎯 Objetivo da Aula

Softwares profissionais não são amontoados desordenados de blocos: eles seguem padrões claros de Arquitetura de Software, separando a interface do usuário das regras de negócio. Além disso, as grandes empresas utilizam a Gamificação (Serious Games) para treinar motoristas e operadores de empilhadeira em ambientes virtuais seguros com pontuações, vidas e cronômetros antes de irem para o galpão real.

Ao final desta aula, você será capaz de:

  1. Compreender o padrão arquitetural em 3 camadas: Camada de Apresentação (HUD), Camada de Regras e Camada de Operações.
  2. Criar um ator invisível dedicado (Game Manager / Gerenciador do Sistema).
  3. Implementar um Cronômetro Regressivo de tempo operacional.
  4. Gerenciar Vidas / Integridade de Carga com detecção de colisões.
  5. Construir o Simulador Gamificado de Treinamento de Manobras da FastLog.

📥 Material de Apoio e Roteiro de Blocos:


🏢 O Cenário Prático (Seu Desafio)

Situação: O departamento de Treinamento & Desenvolvimento (T&D) da FastLog quer reduzir os custos com acidentes de empilhadeira no armazém. Você foi encarregado de criar um jogo de simulação corporativa chamado “Desafio do Pátio Seguro”:

  • O operador controla a empilhadeira com as setas do teclado.
  • Ele tem 60 segundos para transportar 3 caixas até a área de embarque.
  • A empilhadeira começa com 3 Pontos de Integridade (Vidas).
  • Se colidir com os cones ou paredes do galpão, perde 1 ponto e toca som de colisão.
  • Se o tempo acabar ou as vidas zerarem: Falha na Operação (Game Over).
  • Se entregar as 3 caixas com tempo e integridade: Certificação Aprovada!

Missão: Programar a arquitetura completa da simulação gamificada no Scratch.


🧠 Fundamentos: Arquitetura em 3 Camadas no Scratch

1. A Separação de Responsabilidades

Para evitar que o código de movimentação da empilhadeira fique poluído com regras de tempo e pontuação, dividimos o projeto em atores especializados:

graph TD
    subgraph Camada_Apresentacao ["1. Camada de Apresentação (HUD / Palco)"]
        H1["Monitores de Placar: Tempo, Vidas, Caixas Entregues"]
        H2["Telas de Vitória e Game Over"]
    end
    
    subgraph Camada_Controle ["2. Camada de Regras (Ator Invisível: Gerenciador)"]
        G1["Cronômetro Regressivo (1 seg em 1 seg)"]
        G2["Auditor de Vitória: Caixas = 3?"]
        G3["Auditor de Derrota: Vidas = 0 ou Tempo = 0?"]
    end
    
    subgraph Camada_Operacional ["3. Camada de Operações (Atores Físicos)"]
        O1["Empilhadeira (Controles de Teclado)"]
        O2["Caixas e Cones (Sensores de Colisão)"]
    end
    
    O2 -- "Colisão Detectada" --> G3
    G1 --> H1
    G2 -- "Transmite VITORIA" --> H2
    G3 -- "Transmite DERROTA" --> H2
    
    style H1 fill:#2980b9,stroke:#fff,color:#fff
    style G1 fill:#e67e22,stroke:#fff,color:#fff
    style G2 fill:#27ae60,stroke:#fff,color:#fff
    style G3 fill:#c0392b,stroke:#fff,color:#fff
    style O1 fill:#8e44ad,stroke:#fff,color:#fff

2. O Cronômetro Regressivo Perfeito

Muitos iniciantes usam o sensor nativo de tempo do Scratch, mas para um jogo com controle de pausa, o melhor padrão é criar uma variável Tempo_Restante com um laço repita até que:

1
2
3
4
5
mude [Tempo_Restante v] para (60)
repita até que <(Tempo_Restante) = (0)>
    espere (1) segundos
    adicione (-1) a [Tempo_Restante v]
fim

📖 Exemplo Guiado: O Gerenciador de Jogo (Game Manager)

Passo a Passo no Scratch 3.0:

  1. Crie as variáveis globais: Tempo_Restante, Vidas_Veiculo e Pontos_Coleta.
  2. Deixe os 3 monitores visíveis no topo do palco organizados como um painel de bordo.
  3. Crie um novo ator, desenhe um ponto transparente ou um ícone pequeno e chame de Gerenciador_Sistema:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
quando clicar em 🏁
// 1. Reset e Inicialização dos Parâmetros Globais
mude [Tempo_Restante v] para (60)
mude [Vidas_Veiculo v] para (3)
mude [Pontos_Coleta v] para (0)
diga [TURNO INICIADO: Mova as cargas com atenção!] por (2) segundos

// 2. Loop de Contagem do Tempo e Verificação de Regras
repita até que <<<(Tempo_Restante) = (0)> ou <(Vidas_Veiculo) = (0)>> ou <(Pontos_Coleta) = (3)>>
    espere (1) segundos
    adicione (-1) a [Tempo_Restante v]
fim

// 3. Avaliação do Resultado Final da Operação
se <(Pontos_Coleta) = (3)> então
    toque o som [Tada v]
    diga [PARABÉNS: Certificação de Operador Conquistada com Sucesso!] por (4) segundos
    transmita [VITORIA v]
senão
    toque o som [Alert v] até o fim
    diga [FALHA NA OPERAÇÃO: Reprovado no teste de pátio.] por (4) segundos
    transmita [GAME_OVER v]
fim

🛠️ Prática Obrigatória 1: Sensor de Dano e Perda de Vidas

O Desafio:

No ator da Empilhadeira:

  1. Antes de tudo, programe o controle do operador pelo teclado (a empilhadeira precisa se mover livremente pelo pátio para o desafio funcionar):
    • quando a tecla [seta para cima v] for pressionadamude y por (10).
    • quando a tecla [seta para baixo v] for pressionadamude y por (-10).
    • quando a tecla [seta para a esquerda v] for pressionadamude x por (-10).
    • quando a tecla [seta para a direita v] for pressionadamude x por (10).
  2. Crie um ator Cone_Transito na via de manobra.
  3. Na empilhadeira, dentro de um laço sempre:
    • Se <tocando em [Cone_Transito v]?>:
      • Toque o som de batida: toque o som [Car Crash v].
      • Perca 1 vida: adicione (-1) a [Vidas_Veiculo v].
      • Recue 30 pixels para trás para descolar do cone: mova (-30) passos.
      • Pisque em vermelho: mude o efeito [cor v] para (0)espere (0.2) segslimpe os efeitos gráficos.

🛠️ Prática Obrigatória 2: Coleta e Embarque de Cargas

No ator Caixa_Carga:

  1. Comece na posição $x: 0, y: 0$.
  2. Dentro de um laço sempre:
    • Se <tocando em [Empilhadeira v]?>:
      • Toque o som de coleta: toque o som [Collect v].
      • Adicione 1 ponto: adicione (1) a [Pontos_Coleta v].
      • Sorteie uma nova posição para a próxima caixa:
        • vá para x: (número aleatório entre (-180) e (180)) y: (número aleatório entre (-100) e (100)).

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo do projeto com o nome: Atividade_19_SeuNome_SeuSobrenome.sb3.
  2. Jogue uma partida completa testando os cenários de vitória e de colisão.
  3. No Microsoft Teams, envie na tarefa “Scratch Cap 19 - Gamificação e Arquitetura”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar o conceito de Game Loop, State Machines e Gamificação Corporativa. Empresas globais como Walmart, FedEx e Embraer utilizam simulações gamificadas exatamente como essa para certificar seus colaboradores em segurança operacional antes de liberá-los para o trabalho real.


🔥 Desafio de Fixação: Tela de Fim de Jogo (Game Over Screen)

Crie um ator de tela cheia com duas fantasias: Tela_Vitoria e Tela_Derrota. Programe esse ator para ficar escondido no início (quando clicar em 🏁 ➔ esconda). Quando receber VITORIA, ele surge no centro com a tela verde. Quando receber GAME_OVER, ele surge com a tela vermelha e encerra todos os scripts com 🟠 pare [tudo].


🔑 Gabarito de Código (Blocos do Scratch)

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[Ator: Empilhadeira]
quando a tecla [seta para cima v] for pressionada
mude y por (10)

quando a tecla [seta para baixo v] for pressionada
mude y por (-10)

quando a tecla [seta para a esquerda v] for pressionada
mude x por (-10)

quando a tecla [seta para a direita v] for pressionada
mude x por (10)

quando clicar em 🏁
sempre
    se <tocando em [Cone_Transito v]?> então
        toque o som [Car Crash v]
        adicione (-1) a [Vidas_Veiculo v]
        mova (-30) passos
        mude o efeito [cor v] para (0)
        espere (0.2) segundos
        limpe os efeitos gráficos
    fim
    espere (0.05) segundos
fim

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[Ator: Caixa_Carga]
quando clicar em 🏁
vá para x: (0) y: (0)
sempre
    se <tocando em [Empilhadeira v]?> então
        toque o som [Collect v] até o fim
        adicione (1) a [Pontos_Coleta v]
        vá para x: (número aleatório entre (-180) e (180)) y: (número aleatório entre (-100) e (100))
    fim
    espere (0.05) segundos
fim

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
[Ator: Tela_Final]
quando clicar em 🏁
esconda

quando eu receber [VITORIA v]
mude para a fantasia [Tela_Vitoria v]
vá para x: (0) y: (0)
vá para a camada [frente v]
mostre
toque o som [Win v]
pare [tudo v]

quando eu receber [GAME_OVER v]
mude para a fantasia [Tela_Derrota v]
vá para x: (0) y: (0)
vá para a camada [frente v]
mostre
toque o som [Lose v]
pare [tudo v]

📥 Download do Roteiro Completo desta Aula:
Baixe o arquivo consolidado Capitulo_19.txt ou o pacote compactado (.zip) com os scripts e desafios da aula.


📝 Atividade Extra: Questionário de Fixação (Caderno)

Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.

  1. Quais são as três camadas do padrão arquitetural apresentado nos Fundamentos para organizar um projeto Scratch?
  2. Qual é o nome do ator invisível criado no Exemplo Guiado para concentrar a lógica de regras do jogo (Camada de Regras)?
  3. Quais são os nomes das três variáveis globais criadas no Exemplo Guiado?
  4. No Exemplo Guiado, quais são as três condições (ligadas por “ou”) que fazem o laço repita até que do Gerenciador_Sistema parar de contar o tempo?
  5. Segundo os Fundamentos (“O Cronômetro Regressivo Perfeito”), qual estrutura de laço é recomendada para controlar o tempo do jogo, em vez do sensor nativo de tempo do Scratch?
  6. Na Prática Obrigatória 1, liste as ações que ocorrem na empilhadeira quando ela toca no ator Cone_Transito.
  7. Na Prática Obrigatória 2, o que acontece com a Caixa_Carga no exato momento em que ela é tocada pela Empilhadeira?
  8. Segundo o Cenário Prático, quantos segundos o operador tem para completar a missão, e quantas caixas ele precisa transportar até a área de embarque?
  9. Segundo o Cenário Prático, com quantos Pontos de Integridade (Vidas) a empilhadeira começa a simulação?
  10. Segundo o Checkpoint de Lógica & Engenharia de Software, a quais conceitos técnicos de desenvolvimento de jogos a gamificação corporativa deste capítulo está associada?