Traducir el blog

Un juego del Rabino en Excel

🔝To translate this blog post to your language, select it in the top left Google box.


NUEVA REVISIÓN: A 6 de febrero de 2025, he subido una nueva revisión del juego con algunas correcciones de problemas y mejoras en el motor del juego.


AVISO: En la red hay muchos juegos de cartas, escritos por ejemplo en Java o Python, pero al intentar descargarlos mi antivirus detecta amenazas en los ejecutables y los pone en cuarentena, pues son un riesgo para mi equipo.

Pero esto no te pasará si descargas ¡¡¡ mi juego del Rabino en Excel !!!


Un juego del Rabino en Excel

Esta es la entrega final de una serie de artículos con los que he intentado diseñar en Excel un juego de cartas con una variante especial del Rabino.

Ya me dirás si lo he conseguido.

La variante que he programado es el Rabino que me enseñó mi padre cuando yo era un niño, y es el Rabino que juego muchas tardes con mi esposa. A los dos les dedico este entretenido juego.😘

En este enlace encontrarás todos los juegos de cartas que he programado en Excel:

En esta entrega final explicaré:

♥️  Cómo ganar una serie de partidas.

♠️  Qué datos se guardan de cada partida.

♦️  Cómo ver los resultados de las partidas.

♣️  Qué falta por hacer para mejorar este juego.

La nueva funcionalidad de esta última entrega es poder jugar una serie de partidas, hasta que un jugador sobrepase los 100 puntos, con lo que perderá la serie de partidas, o hasta que un jugador cierre con una Escalera Real, en cuyo caso ganará la serie de partidas del Rabino.

En la imagen se muestran los resultados de las últimas partidas, y cuántas series de partidas ha ganado cada jugador.

¡Vaya!

¡El Rabino en Excel me lleva ventaja!

¡Tengo que seguir retándolo a jugar más partidas!


Vídeo del juego del Rabino

En este vídeo verás la estadística de puntos de algunas de las muchas partidas que he jugado contra el Rabino en Excel, para así probar el motor del juego.


Cómo ganar una serie de partidas

Esta variante del Rabino no la he diseñado en plan profesional sino en plan didáctico, aunque he intentado ser lo más fiel posible a la manera de jugar entre dos jugadores.

Una serie de partidas las gana el jugador:

  • Que cierra con una Escalera Real, con las 10 cartas combinadas en una sola escalera del mismo palo.
  • Si al sumar los puntos de la última partida, el otro jugador sobrepasa los 100 puntos en el total de la serie que se está jugando.


Qué datos se guardan de cada partida

Cuando acaba una partida se guardan sus datos:

  • Fecha y hora
  • Puntos de cada jugador.
  • Total de puntos de cada jugador de la serie de partidas.

Si uno de los jugadores gana la serie de partidas, esa partida se colorea con un verde más oscuro, añadiendo un juego más a ese jugador.


Cómo ver los resultados de las partidas

Los datos se guardan en la hoja 'Juegos', con la macro del módulo modJuegos:

  • AnotarPuntos: Anota los puntos del juego a partir de la fila 21 de la hoja 'Juegos'.

En la celda D18 está el total de las partidas jugadas.

En las celdas D3 y J3 están las series de partidas ganadas por cada jugador.

Para ver estos datos en la hoja 'Tapete' se usa la macro:

  • MostrarJuegos: Muestra u oculta los juegos de las partidas jugadas en una forma (shape) de Excel, creada con la cámara de Excel.

TRUCO: Con esta macro se consigue crear una imagen estática de las partidas jugadas, escribiendo por segunda vez la fórmula sin rangos:

Selection.Formula = ""

Con lo que se consigue mejorar el rendimiento del juego, pues si se mantiene la fórmula de la cámara de Excel, la imagen es dinámica y se refresca y se recalcula continuamente. Por eso hay que igualar la fórmula dos veces, una con el rango de la foto y otra sin nada, como se ve en este código:


Qué falta por hacer

Para poder finalizar el diseño del juego aún falta bastante por hacer:

  1. Ajustar y optimizar el motor del juego, hecho con el complemento Solver.
  2. Corregir los defectos del juego y seguir mejorándolo.
  3. Documentar el juego profesionalmente...
  4. Barajar de forma menos aleatoria, pues la mayoría de los humanos no somos tan variables, y creo que nos gusta la rutina...
  5. Que el Rabino en Excel cierre alguna vez con Color o con Escalera Real, lo que es muy improbable que ocurra ahora... 
  6. Colocar las cartas de los dos jugadores en un arco, como si las tuvieras en la mano...
  7. Poder jugar dos humanos en remoto...
  8. Cualquier cosa que se te ocurra añadir a este juego de cartas, y seas capaz de programarlo, ya sea modificando las fórmulas de Excel o cambiando el código en VBA...

Algún día puede ser que me dedique a ello. De momento, prefiero dejar las cartas a un lado, pues ya le he dedicado más de 3 meses al diseño de este juego del Rabino y quiero hacer otras cosas...


Descarga un juego del Rabino en Excel

Descarga esta variante del Rabino, compatible con las versiones de escritorio desde Excel 2010 hasta Excel para Microsoft 365.

Las macros del archivo descargado están bloqueadas por defecto. Para desbloquear las macros debes modificar las Propiedades del archivo siguiendo estas instrucciones:

Las macros de Internet están bloqueadas de forma predeterminada en Office - Deploy Office | Microsoft Learn

Abre el archivo y presiona el botón: Habilitar edición cuando aparezca el aviso de VISTA PROTEGIDA.

Presiona el botón: Habilitar contenido cuando aparezca la ADVERTENCIA DE SEGURIDAD Las macros se han deshabilitado o se deshabilitó parte del contenido activo.

Las macros VBA no están protegidas, por lo que puedes analizarlas. Las hojas están protegidas con una contraseña que es fácil conocer, pues está guardada en VBA escrita en la constante: sContra.

ATENCIÓN: Se puede modificar este libro de Excel respetando esta licencia:

Creative Commons — Atribución-NoComercial-CompartirIgual-No portada — CC BY-NC-SA 4.0


Más juegos de cartas en Excel

En este enlace encontrarás todos los juegos de cartas que he programado en Excel:

Me ayudarás si me indicas las erratas que encuentres y me digas qué mejoras le faltan a este juego...

Jugando al Rabino en Excel - Parte 9

🔝To translate this blog post to your language, select it in the top left Google box.


Parte 9 de un juego del Rabino

Esta es la novena parte de una serie de artículos con los que intento diseñar en Excel un juego de cartas con una variante especial del Rabino.

Al final de este artículo hay un enlace a todos mis juegos de cartas.

En esta Parte 9 explicaré:

♥️  Cuándo decide Excel acabar la partida.

♠️  Cómo elegir la carta comodín: Rabino o The Jolly.

♦️  Cómo ver u ocultar los puntos de cada jugador.

♣️  Qué falta por hacer para completar el desarrollo de este juego.

La principal novedad de esta entrega es que el motor del juego decide automáticamente cuándo acabar la partida, indicando qué jugador ha cerrado y los puntos de cada jugador, además de mostrar las cartas del jugador Rabino en Excel, que son las cartas de arriba ocultas durante la partida.


Vídeo con la Parte 9 del juego

En este vídeo verás una de las muchas partidas que he jugado contra el Rabino en Excel, y así probar el motor del juego.


Cuándo decide Excel acabar la partida

Esta variante del Rabino no la he diseñado en plan profesional sino en plan didáctico, aunque estoy intentando ser lo más fiel posible a la manera de jugar entre dos jugadores.

En esta Parte 9 ya se puede jugar una partida completa, y es el motor del juego el que decide si se cumplen las condiciones para acabar la partida, según las reglas del juego que están escritas en la hoja 'Ayuda'.

La nueva función: TestFinPartida, detecta si se puede acabar la partida en curso cerrando el primero de los dos jugadores que puede:

1) Cerrar con Escalera Real, asignando -100 puntos si las 10 cartas son del mismo palo y forman una sola escalera.

2) Cerrar con Color, asignando -25 puntos si las 10 cartas son del mismo palo y no están todas combinadas.

3) Cerrar con -10 puntos, si las 10 cartas están combinadas según las reglas del juego.

4) Cerrar con 1, 2 o 3 puntos, si hay 9 cartas combinadas y una carta sin combinar, esta carta debe ser un as (1), un dos (2) o un tres (3), asignando los puntos de la carta no combinada.

Al jugador que no ha cerrado se le asigna la suma de los puntos de las cartas sin combinar.

El jugador Rabino en Excel, con las cartas de arriba, avisa del cierre con un mensaje.

Al jugador con las cartas de abajo se le pregunta si cierra ya o si sigue jugando. Por ejemplo, para mejorar el cierre del jugador humano, en lugar de cerrar con 3, 2 o 1 puntos, podría intentar cerrar con -10 puntos. O también podría intentar cerrar con Color (-25 puntos) o con Escalera Real.

En el momento en que se decide finalizar la partida, se muestran las cartas de la fila de arriba del jugador Rabino en Excel, que estaban ocultas porque son las cartas de nuestro contrincante. Esto se consigue llamando a la macro: MostrarJugador2

La función TestFinPartida se apoya en varias celdas de la hoja 'Motor'.

Nuevas celdas en la hoja 'Motor':

  • Celda B15 - miCartaMarcaPila: Vale 1 si el motor del juego ha elegido una carta de la pila. Vale 0 si ha elegido una carta del mazo oculto.
  • Celda B17 - miFinJugador2: Fórmula con los puntos para tomar la decisión de cerrar el jugador 2: Rabino en Excel.
  • Celda B18 - miFinJugador1: Fórmula con los puntos para tomar la decisión de cerrar el jugador 1: Usuario de Excel.
  • Celda B20 - misPuntos2: Vale 1 si muestra los puntos del jugador 2.
  • Celda B21 - misPuntos1: Vale 1 si muestra los puntos del jugador 1.
  • Celda B22 - misPuntos0: Vale 1 si muestra los puntos del jugador 1 siempre y del jugador 2 cuando acaba la partida.
  • Columna R: Fórmulas para averiguar si un jugador cierra con Color, con las 10 cartas del mismo palo.
  • Columna S: Fórmulas para averiguar si un jugador cierra con Escalera Real.
  • Columna T: Fórmulas para controlar el buen funcionamiento del motor del juego, si todas las celdas valen 0. Será erróneo si alguna celda es mayor que cero.


Cómo elegir la carta comodín

Antes de comenzar una partida se puede elegir la carta comodín: Rabino o The Jolly.

Haciendo clic en la figura de un comodín se cambia al otro comodín mediante la macro: ElegirRabino

Solamente se permite elegir el comodín antes de iniciar la partida, tal y como se muestra en la imagen animada de la derecha, pues durante la partida no se ve el comodín.

El cambio de comodín se hace en la celda N2 (miRabino) de la hoja 'Baraja'.


Cómo ver u ocultar los puntos

Haciendo clic en la celda BO1 con un cero (0) se ven u ocultan los puntos de cada jugador, llamando a la macro: VerPuntos

Los puntos de las cartas de arriba solamente se ven al finalizar la partida, para no dar pistas durante la partida de las cartas combinadas por el motor del juego para el jugador Rabino en Excel.


Qué falta por hacer

Para poder finalizar el diseño del juego aún falta bastante por hacer:

  1. Guardar estadísticas de las partidas jugadas.
  2. Obtener el ganador de una serie de partidas.
  3. Ajustar y optimizar el motor del juego con el complemento Solver.
  4. Corregir los defectos del juego y seguir mejorándolo.

Los dos primeros puntos los veremos en la próxima entrega, que será la última de este curso sobre el diseño de un juego de cartas en Excel. Los otros dos puntos los dejo para más adelante...


Descarga la Parte 9 de un Rabino en Excel

Descarga la Parte 9 de esta variante del Rabino, compatible con las versiones de escritorio desde Excel 2010 hasta Excel para Microsoft 365.

Las macros del archivo descargado están bloqueadas por defecto. Para desbloquear las macros debes modificar las Propiedades del archivo siguiendo estas instrucciones:

Las macros de Internet están bloqueadas de forma predeterminada en Office - Deploy Office | Microsoft Learn

Abre el archivo y presiona el botón: Habilitar edición cuando aparezca el aviso de VISTA PROTEGIDA.

Presiona el botón: Habilitar contenido cuando aparezca la ADVERTENCIA DE SEGURIDAD Las macros se han deshabilitado o se deshabilitó parte del contenido activo.

Las macros VBA no están protegidas, por lo que puedes analizarlas. Las hojas están protegidas con una contraseña que es fácil conocer, pues está guardada en VBA escrita en la constante: sContra.

ATENCIÓN: Se puede modificar este libro de Excel respetando esta licencia:

Creative Commons — Atribución-NoComercial-CompartirIgual-No portada — CC BY-NC-SA 4.0


Más juegos de cartas en Excel

En este enlace encontrarás todos mis juegos de cartas programados en Excel:

Me ayudarás si me indicas las erratas que encuentres en este artículo, y si me comentas qué es lo que te gustaría ver en los próximos artículos.

Jugando al Rabino en Excel - Parte 8

🔝To translate this blog post to your language, select it in the top left Google box.


Parte 8 de un juego del Rabino

Esta es la octava parte de una serie de artículos con los que intento diseñar en Excel un juego de cartas con una variante especial del Rabino.

Al final de este artículo hay un enlace a todos mis juegos de cartas.

En esta Parte 8 explicaré:

♥️  Que ya se puede jugar una partida completa contra el motor del juego.

♠️  Que Excel ya decide automáticamente qué carta jugar, marcando en un marco amarillo una carta del mazo o de la pila de descartes.

♦️  Que el motor del juego también decide qué carta tirar a la pila de descartes.

♣️  Cómo saber qué cartas ha combinado el motor del juego.

Si ves esta imagen es que algo ha fallado. La conseguí mientras hacía pruebas para marcar la carta que ha decidido jugar el Rabino en Excel, obtenida por el motor del juego, que es una combinación del complemento Solver y de código VBA.

Durante el juego, cuando le toque jugar a las cartas de arriba quedará marcada la carta a jugar con un marco de color amarillo, y solamente será marcada una carta, que será la que hay que jugar.

El motor del juego decide automáticamente qué carta jugar, marcando en un marco amarillo una carta del mazo o de la pila de descartes. Y también decide qué carta tirar a la pila de descartes.


Vídeo con la Parte 8 del juego

En este vídeo verás un par de partidas completas, que he jugado contra el motor del Rabino en Excel.

A continuación explicaré lo que no he querido contar en este vídeo para no hacer espóiler.


Cómo jugar una partida completa

Esta variante del Rabino no la he diseñado en plan profesional sino en plan didáctico, aunque estoy intentando ser lo más fiel posible a la manera de jugar entre dos jugadores.

En esta Parte 8 he ocultado las cartas de arriba, para que no se sepa que mano tiene el Rabino en Excel, aunque aún sigo mostrando el valor de las cartas sin combinar, para hacer más didáctico el juego...

Ya no se muestra ningún cuadro de diálogo, cuando Solver intenta resolver la combinación de cartas, y el motor del juego marca la siguiente carta que jugará nuestro contrincante del Rabino en Excel.

He cambiado la llamada al complemento Solver de Excel para que no salga ningún mensaje cuando se alcanza alguno de los límites, de tiempo por ejemplo, que he fijado intentando resolver las combinaciones posibles de las cartas del jugador Rabino en Excel.

En la macro ResolverCartas he modificado estas instrucciones:

' Ejecuta el análisis

result = Application.Run("Solver.xlam!SolverSolve", True, "ShowTrial")

' Finaliza el análisis

Application.Run "Solver.xlam!SolverFinish", 1

Y he añadido esta nueva macro:

Function ShowTrial(Reason As Integer)

ShowTrial = 0

End Function

En esta página en inglés se explica el uso de esta función para que, en lugar de que Solver se detenga por cualquier motivo mostrando el cuadro de diálogo: Mostrar solución de prueba, ahora no lo muestre y continúe intentando resolver la combinación de las cartas, sin necesidad de interactuar con el usuario del juego:

También he cambiado las opciones de Solver, para intentar mejorar su rendimiento, pero aún hay que optimizar esos valores algo más, por lo que seguiré estudiando esta página en inglés:


Cómo decide el motor del juego qué carta jugar

El motor del juego ya decide automáticamente cuál es la próxima carta que jugará el Rabino en Excel, marcando en un marco amarillo una carta del mazo o de la pila de descartes. También decide automáticamente qué carta tirar a la pila de descartes.

AVISO: La carta marcada en amarillo se debe escoger obligatoriamente, y el juego no permite elegir otra carta que no sea la que ha marcado el motor del juego.

Para hacer más realista el juego, la carta marcada en amarillo tiene que moverla el jugador humano, pues no cambia automáticamente de un lugar a otro.

En esta imagen animada el motor del juego marca en amarillo el Rey (K) de tréboles♣️, para que sea robado de la pila de descartes. A continuación intenta resolver las posibles combinaciones de las 11 cartas, y acaba marcando el 7 de diamantes♦️, para que sea descartado y echado a la pila de descartes.

Para ello he añadido dos nuevas macros al módulo: modReglas

  • ElegirCarta: Para decidir si el Rabino en Excel marca la carta del mazo o de la pila de descartes.
  • MarcarCarta: Para marcar la carta que jugará el Rabino en Excel.


En la hoja 'Motor' he añadido algunas fórmulas para elegir y marcar la carta a jugar.

En la celda B12 se escribe la carta de la pila de descartes, para comprobar si combina con las otras 10 cartas del jugador 2, que es el Rabino en Excel.

En la celda F14 se comprueba si el valor de esa carta es igual al de alguna de las 10 cartas, en cuyo caso queda marcada.

En la celda G14 se comprueba si esa carta puede formar parte de una escalera con alguna de las 10 cartas, en cuyo caso queda marcada.

Si la carta de la pila de descartes no sirve para combinar con alguna de las 10 cartas, la carta de arriba del mazo será la que quedará marcada.

La carta marcada, sea del mazo o de la pila de descartes, será la que el jugador 2 robará para intentar combinarla con las otras 10 cartas.

Una vez combinadas las cartas, el motor del juego decidirá qué carta marcar, y la carta marcada habrá que echarla a la pila de descartes.

La fórmula que se ve en la imagen de arriba, de la celda Q14, es la que decide qué carta marcar, valiéndose del nuevo rango de celdas Q3:Q13, en el que se indica qué cartas no están combinadas y son candidatas a descartarlas.

Las fórmulas anteriores pueden variar sin previo aviso en las próximas entregas de las partes de este desarrollo del juego, siempre con la intención puesta en mejorarlo...


Qué cartas combina el motor del juego

Para saber qué cartas ha combinado el jugador Rabino en Excel, en la Parte 8 hay que ver el rango E3:E13 de la hoja 'Motor', donde están las cartas ordenadas según las combinaciones resueltas por el motor del juego.

Este procedimiento no será necesario cuando se muestren las cartas de la fila de arriba, en el momento en que se decida dar por finalizada la partida, lo que se verá en la siguiente entrega de este juego...


Qué falta por hacer

Para poder finalizar el diseño del juego aún falta bastante por hacer:

  1. Cerrar la partida con Escalera Real, si todas las cartas están combinadas en una única escalera del mismo palo.
  2. Cerrar la partida con Color, si todas las cartas son del mismo palo aunque no estén combinadas.
  3. Decidir cuándo acaba la partida cualquiera de los dos jugadores.
  4. Mostrar las cartas del jugador Rabino en Excel al acabar la partida.
  5. Ordenar las cartas combinadas del jugador Rabino en Excel.
  6. Guardar estadísticas de las partidas entre los dos jugadores.

Todo esto lo iremos viendo en las próximas entregas de las Partes de este curso sobre el diseño de un juego de cartas en Excel.


Descarga la Parte 8 de un Rabino en Excel

Descarga la Parte 8 de esta variante del Rabino, compatible con las versiones de escritorio desde Excel 2010 hasta Excel para Microsoft 365.

Las macros del archivo descargado están bloqueadas por defecto. Para desbloquear las macros debes modificar las Propiedades del archivo siguiendo estas instrucciones:

Las macros de Internet están bloqueadas de forma predeterminada en Office - Deploy Office | Microsoft Learn

Abre el archivo y presiona el botón: Habilitar edición cuando aparezca el aviso de VISTA PROTEGIDA.

Presiona el botón: Habilitar contenido cuando aparezca la ADVERTENCIA DE SEGURIDAD Las macros se han deshabilitado o se deshabilitó parte del contenido activo.

Las macros VBA no están protegidas, por lo que puedes analizarlas. Las hojas están protegidas con una contraseña que es fácil conocer, pues está guardada en VBA escrita en la constante: sContra.

ATENCIÓN: Se puede modificar este libro de Excel respetando esta licencia:

Creative Commons — Atribución-NoComercial-CompartirIgual-No portada — CC BY-NC-SA 4.0


Más juegos de cartas en Excel

En este enlace encontrarás todos mis juegos de cartas programados en Excel:

Me ayudarás si me indicas las erratas que encuentres en este artículo, y si me comentas qué es lo que te gustaría ver en los próximos artículos.

Mi lista de blogs