POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

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

Buscaminas CLI con Node.js (Parte 3/3): registro de jugadores, puntuaciones y top 10

Publicado el 29/09/2025

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.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio