Visão geral
Terceiro jogo do portfólio. Um puzzle cozy de arrumar mala: 8 itens de formato fixo (poliminós: quadrado, L, I, T, S) pra encaixar numa grade de 8x6 células, arrastando e girando até tudo caber sem sobrepor nada.
O encaixe é resolvido como um Tetris de inventário, grade discreta com colisão por célula, em vez de física contínua. Essa escolha evita depender de um editor gráfico pra tunar sensação de física (que não existe neste fluxo de desenvolvimento), sem abrir mão da "polida" visual: cor, emoji, arrasto suave.
Arquitetura
A rotação de peça é geometria pura (transformação de coordenadas, sem trigonometria nem lib externa) e a checagem de colisão é um conjunto de células ocupadas — nenhuma das duas depende de motor de física. Mesmo padrão dos outros jogos do portfólio: lógica separada da renderização, testável sem abrir navegador.
Um teste automatizado com navegador headless encontrou um bug real de UX antes do lançamento: a página centralizava verticalmente por flexbox, e como a bandeja de itens encolhia conforme eles saíam dela, a mala inteira mudava de posição na tela a cada peça colocada — corrigido dando altura fixa à bandeja.
Stack
TypeScript puro, sem framework e sem motor de jogo: só tsc compilando pra JavaScript de
navegador. 16 testes automatizados na lógica pura (incluindo uma solução completa calculada à
mão pra validar a condição de vitória), mais teste manual com Playwright simulando o arrasto dos
8 itens de ponta a ponta.