Tic Tac Toe

2023 • GAME

Este projeto demonstra a aplicação de práticas de engenharia de software em um domínio lúdico. Mais do que um simples jogo, é um exercício de arquitetura limpa no frontend, separando rigorosamente a lógica de negócios (regras do jogo, IA) da camada de apresentação (React), garantindo um código testável, manutenível e internacionalizável.


🧩 Desafios Técnicos & Soluções

1. Algoritmo de IA

O Problema: Criar uma experiência single-player desafiadora, onde a CPU não apenas jogue aleatoriamente, mas jogue para ganhar (ou empatar).

A Solução: Implementação do algoritmo Minimax Recursivo. O algoritmo simula a árvore de decisão completa do jogo a cada turno, avaliando todos os cenários futuros possíveis e atribuindo pontuações a estados terminais.

Resultado:

  • Escolhe o movimento que maximiza o ganho da CPU.

2. Confiabilidade e Refatoração (TDD)

O Problema: A lógica de detecção de vitória e o algoritmo Minimax são propensos a erros de borda ("off-by-one") e regressões durante refatorações.

A Solução: Adoção de Test-Driven Development (TDD) com Vitest. Escrevi testes unitários para as funções puras de lógica de jogo antes de integrar com a UI e utilizei React Testing Library para testes de integração.

Resultado:

  • Garante que a interação do usuário dispare as mudanças de estado corretas.
  • Blinda o projeto contra regressões.

🏗️ Arquitetura

  • Separação de Conceitos: A lógica do jogo reside em reducers e utilitários puros testáveis, desacoplada dos componentes visuais.
  • Internacionalização (i18n): Sistema de tradução customizado via React Context (TranslationContext), permitindo suporte nativo a múltiplos idiomas (en, pt-BR) sem bibliotecas externas pesadas.
  • Gerenciamento de Estado Híbrido: Combinação de useReducer para lógica complexa de transição de turnos e localStorage para persistência de dados, permitindo que o usuário recarregue a página sem perder o progresso.

🛠️ Tech Stack

  • Frontend: React, TypeScript
  • Estilos: SASS & SASS Modules
  • Testes: Vitest, Testing Library
  • Build: Vite