Game of Life
El juego de la vida de Conway en el navegador. Tablero infinito sobre canvas con cámara y zoom, biblioteca de patrones clásicos y un par de easter eggs.
Implementación web del autómata celular de Conway. El tablero no tiene tamaño fijo, es un plano infinito que se navega moviendo la cámara y haciendo zoom. El render se hace sobre <canvas> y solo pinta las celdas dentro de la cámara, así que la simulación va fluida aunque haya patrones grandes activos.
Mecánica#
Arrastra con el botón central para mover la cámara. La rueda del ratón hace zoom (entre 0.5x y 5x). Hay un botón para centrar la cámara en el origen.
Tres velocidades (lento 500ms, medio 100ms, rápido 50ms). El panel de estadísticas muestra el número de generaciones y de células vivas en tiempo real.
Atajos de teclado: Espacio play/pause, C clear, R random.
Bajo el capó#
El tablero no es una matriz fija, es un Map<string, boolean> con claves "x,y". Eso permite que sea infinito sin reservar memoria por celdas vacías y simplifica el zoom y el movimiento de cámara. Cada tick recorre solo las celdas vivas y sus 8 vecinos para calcular la siguiente generación. El render pasa el contexto 2D del canvas por una transformación de zoom y cámara, y luego pinta únicamente las celdas dentro del rectángulo visible.
La UI usa Radix bajo el capó (sliders, tooltips, popovers, dropdowns), Tailwind para los estilos y framer-motion para algunas transiciones. Hay un easter egg escondido por ahí. Te lo dejo encontrar.