Skip to content
@TE-C-TRIS

Tectris

Tectris é um jogo educacional em C inspirado no Tetris, que integra desafios de lógica de programação à gameplay, promovendo aprendizado prático.
Tectris Logo

License: MIT Build Status Version

GitHub commits GitHub latest commit GitHub issues

GitHub Org's stars GitHub Org's forks GitHub Org's followers


Figma Trello

Tectris: O Jogo Educacional de Lógica em C

O Tectris é um jogo educacional desenvolvido em C que combina a mecânica clássica do Tetris com desafios de lógica de programação. Durante a partida, os jogadores precisam resolver questões em tempo real para influenciar diretamente seu desempenho no jogo.

A proposta do projeto é transformar o aprendizado de lógica em uma experiência prática, dinâmica e competitiva, estimulando o raciocínio lógico, a tomada de decisões rápidas e o engajamento do usuário.

Diferente de métodos tradicionais, o Tectris integra o conhecimento à gameplay, permitindo que o jogador aprenda enquanto joga, tornando o processo mais intuitivo e eficaz.

Visão Geral do Quadro do Projeto

Tectris Logo

Visão do Padrão de Backlogs

Tectris Gameplay

Features

As funcionalidades do Tectris foram definidas com base em histórias de usuário estruturadas no padrão 3Cs (Card, Conversation, Confirmation), garantindo rastreabilidade, clareza de requisitos e validação objetiva das entregas.

As features estão organizadas por nível de prioridade e impacto no core do sistema.

Core Features (Alta Prioridade)

1. Sistema de Partida Local (Multiplayer Local)

Elemento Descrição
Card Como jogador, quero iniciar uma partida local contra outro jogador para competir em tempo real.
Conversation • Execução síncrona para dois jogadores no mesmo dispositivo
• Inicialização simultânea de dois game loops independentes
• Separação lógica de estados (Player 1 e Player 2)
• Renderização paralela de dois tabuleiros
Confirmation • [ ] Dois jogadores conseguem iniciar uma sessão simultânea
• [ ] Cada jogador possui estado isolado (grid, score, peças)
• [ ] Loop principal mantém sincronização entre os jogadores

2. Engine de Blocos (Core Tetris System)

Elemento Descrição
Card Como jogador, quero visualizar blocos caindo no estilo Tetris para jogar de forma intuitiva.
Conversation • Implementação de grid 10x20 por jogador
• Sistema de queda automática baseado em tempo (tick rate)
• Controle de input (movimento lateral e rotação)
• Sistema de colisão e fixação de peças
• Geração pseudo-aleatória de peças (Tetrominos)
Confirmation • [ ] Blocos caem com base em tempo configurável
• [ ] Inputs do usuário alteram posição corretamente
• [ ] Colisões são detectadas sem inconsistência
• [ ] Peças são fixadas corretamente no grid

3. Sistema de Perguntas (Logic Engine)

Elemento Descrição
Card Como jogador, quero responder perguntas de lógica durante a partida para influenciar meu desempenho.
Conversation • Sistema de eventos que dispara perguntas durante o gameplay
• Estrutura de dados para armazenar perguntas (array/struct)
• Usuário digita a resposta
• Associação de dificuldade a cada pergunta
Confirmation • [ ] Perguntas são exibidas em momentos definidos do jogo
• [ ] Jogador consegue digitar a resposta
• [ ] Sistema valida a resposta corretamente
• [ ] Resultado é persistido no estado do jogo

4. Sistema de Pontuação

Elemento Descrição
Card Como jogador, quero ganhar pontos ao acertar perguntas para medir meu desempenho.
Conversation • Pontuação baseada na dificuldade da pergunta
• Atualização em tempo real do score
• Armazenamento separado por jogador
Confirmation • [ ] Pontuação incrementa corretamente por acerto
• [ ] Valores variam conforme dificuldade
• [ ] Interface reflete atualização em tempo real

5. Sistema de Penalidades

Elemento Descrição
Card Como jogador, quero sofrer penalidades ao errar perguntas para tornar o jogo desafiador.
Conversation • Redução de pontuação
• Inserção de blocos extras (penalidade visual)
• Impacto direto no estado do grid
Confirmation • [ ] Penalidade aplicada imediatamente após erro
• [ ] Estado do jogador é alterado corretamente
• [ ] Feedback visual reforça penalidade

6. Sistema de Vitória

Elemento Descrição
Card Como jogador, quero que o jogo declare um vencedor ao atingir 100 pontos.
Conversation • Definição de condição de término baseada em score
• Interrupção do game loop
• Exibição de tela de resultado
Confirmation • [ ] Jogo encerra ao atingir 100 pontos
• [ ] Vencedor é corretamente identificado
• [ ] Interface exibe resultado final

Secondary Features (Média Prioridade)

7. Sistema de Tempo (Timer Engine)

Elemento Descrição
Card Como jogador, quero ter tempo limitado para responder perguntas para aumentar a dificuldade.
Conversation • Timer associado a cada pergunta
• Redução progressiva do tempo ao longo da partida
• Integração com loop principal
Confirmation • [ ] Timer é exibido na interface
• [ ] Tempo reduz progressivamente
• [ ] Resposta inválida ao expirar o tempo

8. Interface do Usuário (UI Layer)

Elemento Descrição
Card Como jogador, quero uma interface clara para entender o jogo facilmente.
Conversation • Layout dividido em três áreas (Player 1, Centro, Player 2)
• Exibição de score, tempo e perguntas
• Hierarquia visual definida
Confirmation • [ ] Interface apresenta informações essenciais
• [ ] Elementos são legíveis e organizados
• [ ] Navegação é intuitiva

9. Banco de Perguntas Local

Elemento Descrição
Card Como sistema, quero carregar perguntas locais para manter o jogo funcional offline.
Conversation • Armazenamento em estrutura estática (array/struct)
• Carregamento em memória na inicialização
• Sem dependência de serviços externos
Confirmation • [ ] Perguntas são carregadas corretamente
• [ ] Sistema funciona sem conexão externa
• [ ] Estrutura de dados é acessível durante o jogo

Advanced Features (Baixa Prioridade / Diferencial)

10. Sistema Competitivo (Interação entre jogadores)

Elemento Descrição
Card Como jogador, quero afetar o adversário ao acertar perguntas para aumentar a competitividade.
Conversation • Eventos que impactam o estado do adversário
• Exemplo: forçar nova pergunta, atrasar progresso
• Sincronização entre estados dos jogadores
Confirmation • [ ] Ação de um jogador afeta o outro
• [ ] Sistema mantém consistência entre estados
• [ ] Feedback visual é exibido

11. Dificuldade Progressiva

Elemento Descrição
Card Como jogador, quero que o jogo fique mais difícil ao longo do tempo.
Conversation • Aumento da velocidade de queda
• Redução do tempo de resposta
• Escalonamento baseado em tempo de jogo
Confirmation • [ ] Velocidade aumenta gradualmente
• [ ] Tempo de resposta diminui
• [ ] Jogabilidade se torna mais desafiadora

12. Sistema de Feedback Visual

Elemento Descrição
Card Como jogador, quero receber feedback visual ao responder perguntas.
Conversation • Uso de cores semânticas (verde/vermelho)
• Animações de resposta
• Destaque visual de estados
Confirmation • [ ] Feedback imediato ao responder
• [ ] Cores representam corretamente o estado
• [ ] Interface reforça ações do usuário

Backlog — Sistema de Adivinhação (Alta Prioridade)

1. Sorteio do número secreto

Elemento Descrição
Card Como sistema, quero gerar um número aleatório para que o jogador tenha um desafio de adivinhação durante a partida.
Conversation • Geração de número pseudo-aleatório
• Intervalo definido (ex: 1 a 10 ou 1 a 100)
• Número oculto para o jogador
Confirmation • [ ] Número é gerado a cada nova rodada
• [ ] Valor está dentro do intervalo definido
• [ ] Número não é exibido ao jogador

2. Loop de adivinhação

Elemento Descrição
Card Como jogador, quero tentar adivinhar o número até acertar para progredir no jogo.
Conversation • Sistema deve permitir múltiplas tentativas
• Loop continua até acerto ou condição de parada
• Integração com fluxo principal do jogo
Confirmation • [ ] Jogador pode inserir múltiplas tentativas
• [ ] Loop continua enquanto não houver acerto
• [ ] Loop é encerrado corretamente ao acertar

3. Validação da entrada

Elemento Descrição
Card Como sistema, quero validar a entrada do jogador para evitar erros e garantir funcionamento correto.
Conversation • Verificar se entrada é numérica
• Validar se está dentro do intervalo permitido
• Tratar entradas inválidas
Confirmation • [ ] Entrada inválida é identificada
• [ ] Sistema impede valores fora do intervalo
• [ ] Mensagem de erro é exibida quando necessário

Backlog — Sistema de Adivinhação (Média Prioridade)

4. Feedback: “Muito baixo”

Elemento Descrição
Card Como jogador, quero saber quando meu palpite está abaixo do valor correto para ajustar minha estratégia.
Conversation • Comparação entre palpite e número secreto
• Feedback textual exibido na interface
Confirmation • [ ] Sistema identifica quando valor é menor
• [ ] Mensagem “Muito baixo” é exibida corretamente

5. Feedback: “Muito alto”

Elemento Descrição
Card Como jogador, quero saber quando meu palpite está acima do valor correto para ajustar minha estratégia.
Conversation • Comparação entre palpite e número secreto
• Feedback textual exibido na interface
Confirmation • [ ] Sistema identifica quando valor é maior
• [ ] Mensagem “Muito alto” é exibida corretamente

Backlog — Sistema de Adivinhação (Baixa Prioridade)

6. Feedback: “Acertou”

Elemento Descrição
Card Como jogador, quero ser informado quando acertar o número para receber recompensa no jogo.
Conversation • Comparação direta entre palpite e número secreto
• Integração com sistema de pontuação
Confirmation • [ ] Sistema identifica acerto corretamente
• [ ] Mensagem “Acertou” é exibida
• [ ] Pontuação ou bônus é aplicado

Protótipo Inicial

O protótipo inicial do Tectris foi desenvolvido com o objetivo de validar conceitos fundamentais de interação, fluxo de navegação e organização da interface, antes da implementação visual definitiva.

A abordagem adotada priorizou alta fidelidade, permitindo fiel iteração, coleta de feedback e ajustes baseados em princípios de Interação Humano-Computador (IHC).

Tela Inicial Protótipo Baixa Fidelidade Protótipo Baixa Fidelidade Protótipo Baixa Fidelidade Protótipo Baixa Fidelidade Protótipo Baixa Fidelidade Protótipo Baixa Fidelidade Protótipo Baixa Fidelidade Protótipo Baixa Fidelidade

Assista ao vídeo de demostração

Objetivos do Protótipo

  • Validar a estrutura geral da interface
  • Definir o fluxo principal do jogo
  • Testar a disposição dos elementos em tela
  • Reduzir complexidade antes da implementação visual
  • Identificar problemas de usabilidade precocemente

Estrutura da Interface

O layout foi organizado em três áreas principais:

🟨 Player 1 (Esquerda) Centro (Interação) 🟦 Player 2 (Direita)
Tabuleiro (grid 10x20) Logo do jogo Tabuleiro (grid 10x20)
Área de próxima peça (NEXT) Card de pergunta (código + alternativas) Área de próxima peça
Exibição de pontuação Botões de resposta Exibição de pontuação
Barra de tempo
Contador de tempo

Diagramas UML das Funcionalidades

Clique no titulo da funcionalidade para acessar o diagrama correspondente completo

Funcionalidade Diagrama Funcionalidade Diagrama Funcionalidade Diagrama
UC01. Jogar partida local Diagrama 1 UC02. Sistema de queda de blocos Diagrama 2 UC03. Perguntas de lógica durante o jogo Diagrama 3
UC04. Sistema de pontuação Diagrama 4 UC05. Penalidade por erro Diagrama 5 UC06. Sistema de vitória Diagrama 6
UC07. Sistema de tempo nas perguntas Diagrama 7 UC08. Efeito competitivo (impactar adversário) Diagrama 8 UC09. Interface do jogo (UI básica) Diagrama 9
UC10. Banco de perguntas (fixo/local) Diagrama 10 UC11. Aumento de dificuldade progressiva Diagrama 11 UC12. Feedback visual (acerto/erro) Diagrama 12
UC13. Sorteio do número secreto Diagrama 13 UC14. Loop de adivinhação Diagrama 14 UC15. Validação da entrada Diagrama 15
UC16. Feedback: "Muito baixo" Diagrama 16 UC17. Feedback: "Muito alto" Diagrama 17 UC18. Feedback: "Acertou" Diagrama 18

Decisões de Design (IHC)

O protótipo foi projetado com base em princípios de usabilidade:

  • Visibilidade do sistema:
    Timer e pontuação sempre visíveis

  • Feedback imediato:
    Respostas geram retorno instantâneo

  • Consistência:
    Estrutura simétrica entre jogadores

  • Reconhecimento ao invés de memorização:
    Interface clara e previsível

Testes Iniciais

O protótipo foi utilizado em testes rápidos com usuários simulados para avaliar:

  • Facilidade de compreensão da interface
  • Clareza das ações disponíveis
  • Tempo de resposta às perguntas
  • Entendimento do fluxo do jogo

Principais Ajustes Identificados

  • Necessidade de destacar melhor o tempo restante
  • Melhorar hierarquia visual da pergunta
  • Ajustar tamanho dos botões de resposta
  • Reforçar feedback visual (cores e animações)

Ferramentas Utilizadas

  • Figma (prototipação e wireframe)
  • Estrutura baseada em grid e componentes reutilizáveis

Evolução do Protótipo

O protótipo de baixa fidelidade serviu como base para:

  • Definição do design system
  • Construção do protótipo de alta fidelidade
  • Validação de critérios de usabilidade

Considerações

A utilização de prototipação inicial permitiu identificar problemas de interação antes da implementação, reduzindo retrabalho e melhorando a experiência do usuário desde as primeiras etapas do projeto.

Arquitetura do Sistema

O Tectris foi desenvolvido seguindo uma arquitetura modular, com separação de responsabilidades, visando facilitar a manutenção, escalabilidade e organização do código.

A aplicação adota um modelo baseado em camadas lógicas, estruturado em componentes independentes que se comunicam por meio de interfaces bem definidas.

Organização Modular

O sistema é dividido nos seguintes módulos principais:

  • Core: responsável pelo controle do loop principal do jogo, gerenciamento de estados e sincronização das execuções.
  • Game Engine: implementa as regras do Tetris, incluindo movimentação, rotação, colisão e fixação de blocos.
  • Logic Engine: gerencia o sistema de perguntas, validação de respostas e aplicação de efeitos no jogo.
  • UI Layer: responsável pela renderização dos elementos visuais e exibição das informações ao usuário.
  • Input Handler: trata as entradas do usuário, convertendo interações em ações no sistema.
  • Utils: contém funções auxiliares reutilizáveis.

Fluxo de Execução

A execução do sistema segue um ciclo contínuo baseado em um game loop:

  1. Inicialização dos estados do jogo
  2. Captura de entrada do usuário
  3. Atualização da lógica do jogo
  4. Processamento de eventos (ex: perguntas)
  5. Renderização da interface
  6. Repetição do ciclo até condição de término

Gerenciamento de Estado

Cada jogador possui um estado independente, contendo:

  • Grid (tabuleiro)
  • Peça atual e próxima
  • Pontuação
  • Status de jogo

Essa separação garante isolamento lógico e evita interferência direta entre os jogadores, exceto em eventos competitivos controlados.

Comunicação entre Módulos

A comunicação entre os módulos ocorre de forma desacoplada, por meio de chamadas de função e estruturas de dados compartilhadas, reduzindo dependências e aumentando a coesão interna de cada componente.

Considerações Arquiteturais

A arquitetura foi projetada para:

  • Garantir clareza na separação de responsabilidades
  • Facilitar testes e manutenção
  • Permitir evolução incremental do sistema
  • Suportar futuras extensões, como novos modos de jogo

Limitações

Por se tratar de uma aplicação local, a arquitetura não contempla:

  • Comunicação em rede
  • Persistência em banco de dados
  • Processamento distribuído

Mecânica do Jogo

A mecânica do Tectris integra elementos clássicos do Tetris com um sistema interativo de resolução de problemas, criando uma experiência híbrida entre jogo e aprendizado.

Sistema de Blocos

O jogo utiliza um grid bidimensional de dimensões 10x20 para cada jogador, no qual peças (tetrominós) são geradas e inseridas continuamente.

As principais regras incluem:

  • Queda automática de peças baseada em um intervalo de tempo (tick rate)
  • Movimentação lateral e rotação controladas pelo usuário
  • Detecção de colisão com limites do grid e outras peças
  • Fixação da peça ao atingir uma posição válida final

Esse sistema constitui o núcleo da jogabilidade, exigindo coordenação motora e percepção espacial.

Sistema de Perguntas

Durante a execução do jogo, eventos de interrupção são acionados para apresentar perguntas de lógica de programação aos jogadores.

Características principais:

  • Perguntas exibidas simultaneamente para ambos os jogadores
  • Estrutura com múltiplas alternativas (2 a 3 opções)
  • Conteúdo baseado em conceitos fundamentais da linguagem C

A resposta do jogador impacta diretamente o estado do jogo, integrando aprendizado à mecânica principal.

Sistema de Recompensa e Penalidade

O sistema de progressão é baseado na relação entre acertos e erros:

  • Acerto:

    • Incremento de pontuação
    • Possível vantagem estratégica (ex: impacto no adversário)
  • Erro:

    • Redução de pontuação
    • Aplicação de penalidades (ex: inserção de blocos adicionais)

Esse equilíbrio promove um ambiente competitivo e dinâmico.

Condição de Vitória

A partida é encerrada quando um dos jogadores atinge a pontuação máxima estabelecida (100 pontos).

Ao término:

  • O loop principal é interrompido
  • O vencedor é identificado e exibido na interface

Mecânica Competitiva

O jogo incorpora interação indireta entre os jogadores, onde ações individuais podem afetar o adversário.

Exemplos:

  • Ativação de eventos que forçam o oponente a responder novas perguntas
  • Alterações no ritmo de jogo do adversário

Essa mecânica adiciona uma camada estratégica ao gameplay.

Sistema de Tempo

Cada pergunta possui um tempo limite para resposta, controlado por um sistema de temporização integrado ao loop principal.

  • O tempo disponível diminui progressivamente ao longo da partida
  • A ausência de resposta dentro do limite é tratada como erro

Esse mecanismo aumenta a pressão cognitiva e a intensidade do jogo.

Progressão de Dificuldade

A dificuldade do jogo evolui dinamicamente com base no tempo de execução:

  • Aumento da velocidade de queda das peças
  • Redução do tempo de resposta das perguntas

Essa progressão garante manutenção do desafio e engajamento contínuo.

Considerações

A mecânica do Tectris foi projetada para integrar habilidades cognitivas (raciocínio lógico) e motoras (controle de peças), promovendo uma experiência de aprendizado ativa e competitiva. sistema competitivo

  • O Tectris pode incluir um modo multiplayer, onde jogadores competem em tempo real para ver quem consegue a maior pontuação ou eliminar mais linhas.
  • Rankings online para incentivar a competição e o engajamento contínuo.

Equipe

Larissa Lira
Product Owner (PO)
🔗 LinkedInGitHub
Diogo Alcelino
Scrum Master
🔗 LinkedInGitHub
João Rafael Morato
Tech Lead
🔗 LinkedInGitHub

Equipe de Desenvolvimento

Emily Raquel
Desenvolvedora Frontend
🔗 LinkedInGitHub
Cecília Lopes
Desenvolvedora Frontend
🔗 LinkedInGitHub
Alice Sena
Desenvolvedora Backend
🔗 LinkedInGitHub
Matheus Vaz
Desenvolvedor Backend
🔗 LinkedInGitHub
Kezia Aguiar
Designer
🔗 LinkedInGitHub

licença

MIT License

Copyright (c) 2026 TE-C-TRIS

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Popular repositories Loading

  1. TECTRIS TECTRIS Public

    Tectris é um jogo educacional em C inspirado no Tetris, que integra desafios de lógica de programação à gameplay, promovendo aprendizado prático.

    C 2 3

  2. .github .github Public

  3. prototipoTectris prototipoTectris Public

    Protótipo do Jogo Tectris em Node.

    TypeScript

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…