Gemas en juego

Tutorial para crear un juego tipo Bejeweled con C++ y SFML: tablero, detección de matches, animación, gravedad, relleno, puntuaciones SQLite y buenas prácticas.

11 sept 2025 • 5 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Este tutorial reescribe y resume de forma clara la creación de un juego tipo match-3 inspirado en Bejeweled usando C++ y SFML, cubriendo desde los principios de diseño hasta la persistencia de puntajes con SQLite y buenas prácticas de ingeniería de software.

Concepto básico del juego: Bejeweled es un rompecabezas donde el objetivo es alinear tres o más gemas del mismo tipo en horizontal o vertical. Al formar una combinación las gemas desaparecen, las piezas superiores caen por gravedad, se rellenan espacios desde arriba y el jugador suma puntos. El juego termina por tiempo o cuando ya no hay movimientos posibles.

Representación de la cuadrícula y piezas: Usa una matriz bidimensional que represente celdas lógicas y una estructura por pieza que contenga coordenadas lógicas de fila y columna, coordenadas visuales en píxeles para animación, un identificador de tipo o color, una bandera match para marcar combinaciones, un valor alpha para efectos de transparencia y una bandera special para piezas con comportamientos avanzados como bombas o limpiadores de fila/columna. La técnica de bordes sentinela consiste en reservar filas y columnas adicionales para simplificar verificaciones de límites y evitar condicionales en cada comprobación.

Ciclo de juego: Todo se organiza alrededor del game loop que procesa eventos de entrada, actualiza la lógica y renderiza. Mantener delta time y una flag isMoving ayuda a coordinar animaciones y a que las fases de detección, desaparición, gravedad y relleno se ejecuten ordenadas sin solaparse.

Interacción y swap: La acción principal es intercambiar dos piezas adyacentes. En la implementación real se debe actualizar la matriz directamente o intercambiar sólo los identificadores de tipo y luego sincronizar las coordenadas lógicas y visuales. Tras una troca se valida si se generó al menos un match; si no, se debe revertir la troca para mantener la mecánica tradicional de Bejeweled.

Detección de combinaciones: Tras cada movimiento se barre la cuadrícula buscando secuencias de tres o más iguales horizontal o verticalmente. Las piezas que pertenezcan a un match se marcan para su posterior procesamiento. Un algoritmo de varrido simple tiene complejidad lineal respecto al número de celdas y funciona muy rápido en un tablero 8x8.

Piezas especiales y reacciones en cadena: Combinar cuatro o más piezas puede convertir una gema en especial. Al activarse, una pieza especial puede marcar regiones adyacentes o filas completas, propagando nuevas combinaciones y creando reacciones en cadena. Estas reacciones obligan a iterar el ciclo de detección hasta que ya no aparezcan más matches.

Animación de desaparición y puntuación: Las piezas marcadas no se eliminan de golpe, se aplica una transición gradual del canal alpha para un efecto de fade out. La puntuación puede calcularse cuando se identifican matches o al completarse la animación, y puede otorgar bonus por combos y reacciones en cadena.

Gravedad y caída de piezas: Tras la eliminación, las piezas por encima caen hacia abajo. El proceso recorre las filas de abajo hacia arriba para garantizar que cada espacio sea llenado por la primera pieza disponible encima. Para una presentación pulida se animan las coordenadas visuales hasta las posiciones destino, manteniendo isMoving mientras dura el movimiento.

Relleno desde arriba: Los espacios vacíos en la parte superior se rellenan con gemas generadas aleatoriamente y colocadas fuera del area visible con coordenadas y negativas para crear un efecto de lluvia al caer. Estas nuevas piezas deben reiniciar flags como match, alpha y special, y luego el sistema debe re-ejecutar la detección en busca de nuevos matches.

Gestor de estados: Implementa una máquina de estados simple con estados como MainMenu, Playing, GameOver y HighScores. Esto organiza la logica de cada pantalla, evitando que procesos de juego se ejecuten cuando no corresponde y facilitando transiciones como jugar de nuevo o mostrar las mejores puntuaciones.

Sistema de persistencia con SQLite: Para almacenar highscores entre sesiones se integra SQLite como base de datos embebida. Se abre o crea un archivo de base de datos, se crea la tabla highscores si no existe y se implementan funciones para insertar y leer las mejores puntuaciones ordenadas. Usar sentencias parametrizadas o preparadas mejora la seguridad y evitar problemas con formatos de texto. No olvidar cerrar la conexión al terminar la aplicación.

Estructura del proyecto y buenas prácticas: El archivo principal debe separar responsabilidades: inicialización de recursos (texturas, fuentes), apertura de la base de datos, inicialización del tablero, y el loop principal que gestiona eventos, actualizaciones y render. Mantener funciones auxiliares para swap, resetGame, detección de matches y actualización de la física mejora la legibilidad. Controlar el framerate y usar sf::Clock o equivalente con delta time garantiza animaciones consistentes.

Conceptos de programación que se aprenden: Event driven programming mediante el poll de eventos, manejo de estados con una FSM, manipulación de matrices 2D y uso de sentinelas, algoritmos de varrido para detección de patrones, técnicas de animación e interpolación, persistencia local con SQLite, sincronización basada en tiempo y diseño de interfaz de usuario básico. También se practican principios de codificación limpia y separación de responsabilidades.

Sobre Q2BSTUDIO y servicios relacionados: Si quieres transformar este prototipo en una aplicación comercial, nuestra empresa Q2BSTUDIO ofrece experiencia en desarrollo de aplicaciones y software a medida, integración con servicios cloud y soluciones de inteligencia artificial. Podemos acompañar desde la concepción del juego hasta su despliegue en la nube y la analítica de datos de uso. Descubre cómo desarrollamos aplicaciones a medida en este caso de uso desarrollo de aplicaciones multiplataforma y solicita información sobre soluciones de IA para empresas en inteligencia artificial.

Servicios y palabras clave: Ofrecemos software a medida y aplicaciones a medida, proyectos de inteligencia artificial y ia para empresas, consultoría en ciberseguridad y pentesting, despliegue en servicios cloud aws y azure, implementación de servicios inteligencia de negocio y paneles con power bi, y creación de agentes IA para automatizar workflows. Estas capacidades permiten convertir un prototipo de juego en un producto robusto, seguro y escalable.

Conclusión: Bejeweled es un proyecto ideal para aprender motores básicos de juego, manejo de datos y persistencia. Aplicando buenas prácticas de arquitectura y apoyándote en un equipo con experiencia en software a medida, inteligencia artificial y servicios cloud se puede llevar el juego desde un prototipo educativo hasta una aplicación lista para usuarios finales. Contacta con Q2BSTUDIO para asesoramiento, desarrollo a medida y escalado en la nube.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat