Buscaminas CLI con Node.js (Parte 3/3)

Buscaminas CLI en Node.js – Parte 3: añade registro de usuario, puntuaciones persistentes en scores.json y un top 10. Control del tiempo, casillas reveladas y minas marcadas vía comandos.

29 sept 2025 • 5 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Buscaminas CLI con Node.js (Parte 3/3) En esta tercera y última entrega completamos la versión terminal del clásico Buscaminas agregando registro de jugador, puntuaciones y una tabla de mejores marcadores para cada partida.

Resumen rápido De las partes anteriores ya tienes la interfaz en terminal, el bucle del juego, el parseo y validación de comandos y las comprobaciones de victoria y derrota. En esta entrega añadimos la petición de nombre de usuario, el seguimiento del marcador durante la partida y el almacenamiento y presentación de las mejores puntuaciones en un archivo JSON.

Pedir nombre de usuario Modifica la función printWelcome para solicitar al jugador que introduzca su nombre y crea una función separada printCommands que muestre las instrucciones de uso. En la IIFE declara una variable username inicialmente indefinida. Al recibir datos por stdin, si username no tiene valor asignado, guarda la primera línea como nombre de usuario, muestra las instrucciones, dibuja la cuadrícula y muestra el prompt. Los comandos que debe entender el juego son rROW,COL para revelar y fROW,COL para marcar o desmarcar una casilla, por ejemplo r0,3 o f2,4.

Seguimiento del score Crea un objeto score con las propiedades time, revealed, flagged y exploded. time almacenará el instante de inicio en milisegundos, revealed contará casillas seguras reveladas, flagged las minas correctamente marcadas y exploded indicará si el jugador ha explotado una mina.

Control del tiempo Asigna score.time con Date.now() cuando el jugador ejecuta su primer comando válido. Al producirse victoria o derrota calcula la duración como diferencia entre ahora y score.time y divídela por 1000 para obtener segundos.

Contar casillas reveladas Al procesar un comando de tipo revelar marca la casilla como revelada y si no contiene mina incrementa score.revealed. Si la casilla estaba marcada, quítale la bandera y ajusta el contador de banderas disponible.

Contar minas marcadas Al alternar una bandera decrementa o incrementa score.flagged según corresponda. Si una bandera se quita porque la casilla fue revelada o porque se desmarca, decrementa score.flagged cuando se descubre que no era mina. Si se marca una casilla que contiene una mina y está sin revelar, incrementa score.flagged.

Detección de explosión Si una casilla revelada contiene una mina, asigna score.exploded true y calcula el tiempo total antes de terminar la partida con un mensaje de derrota.

Cálculo de puntos Define una función calculatePoints que devuelva 10 por cada casilla segura revelada más 25 por cada mina correctamente marcada y un bono de 100 puntos si el jugador no ha explotado una mina. Fórmula puntos igual a 10 por revealed más 25 por flagged más 100 si exploded es false.

Guardar las puntuaciones en fichero Crea un fichero scores.json en el mismo directorio que el script y utiliza el módulo fs de Node para leer y escribir en él. Implementa updateScores que lee y parsea el JSON, añade el nuevo registro con username, puntos y tiempo, escribe el array actualizado y devuelve la lista completa. Usa un bloque try catch para gestionar errores de E S de forma elegante.

Imprimir puntuación y top 10 Implementa printScore para mostrar nombre de usuario, puntos totales, tiempo en segundos, casillas reveladas y minas marcadas correctamente. Ordena la lista de puntuaciones por puntos de mayor a menor y en caso de empate utiliza el tiempo menor como criterio de desempate. Corta la lista a las 10 primeras entradas y muéstralas numeradas como tabla de mejores.

Integración final En los puntos de finalización de partida, tanto en derrota como en victoria, invoca updateScores con username y score, después invoca printScore con los datos devueltos y termina el proceso. De este modo el registro de la partida queda persistido y el jugador puede comparar su rendimiento con el top 10.

Buenas prácticas y extensiones sugeridas Considera serializar con indentación para facilitar la edición manual de scores.json, proteger la lectura y escritura frente a condiciones de carrera si varias instancias modifican el archivo simultáneamente y ofrecer opciones avanzadas como exportar o limpiar el ranking. También puedes ampliar la CLI con modos de dificultad o integración con bases de datos para entornos multiusuario.

Sobre Q2BSTUDIO y servicios relacionados Si buscas llevar una idea a producción con aplicaciones a medida y software a medida, en Q2BSTUDIO somos especialistas en desarrollo de soluciones a medida y podemos ayudarte a convertir este tipo de proyectos en productos robustos y mantenibles. Conecta tu aplicación con soluciones cloud y despliegues gestionados en plataformas como AWS y Azure con nuestros servicios cloud. Consulta nuestro apartado de desarrollo de aplicaciones y software a medida en desarrollo de aplicaciones y software a medida y descubre nuestras capacidades en inteligencia artificial y automatización en soluciones de inteligencia artificial para empresas.

Palabras clave y capacidades destacadas Q2BSTUDIO ofrece experiencia en aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Podemos integrar análisis con Power BI, pipelines de datos, agentes conversacionales IA y servicios de seguridad y pentesting para asegurar el ciclo de vida completo de la solución.

Contacto y próximos pasos Si te interesa profesionalizar este proyecto o integrar sus ideas en un producto escalable, ponte en contacto con nosotros y te guiaremos desde la validación del concepto hasta el despliegue en producción con prácticas de ciberseguridad y operaciones cloud. Q2BSTUDIO combina experiencia técnica y orientación al negocio para proyectos con inteligencia de negocio y automatización de procesos.

Conclusión Con estos cambios tu Buscaminas CLI pasa de ser un juego local a una pequeña experiencia completa con tracking de jugadores y ranking persistente. Es una base excelente para seguir mejorando y conectar con servicios profesionales como los que ofrecemos en Q2BSTUDIO en desarrollo de aplicaciones, inteligencia artificial y servicios cloud.

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