🔝To translate this blog post to your language, select it in the top left Google box.
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.
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.
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:
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...
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...
Para poder finalizar el diseño del juego aún falta bastante por hacer:
- Cerrar la partida con Escalera Real, si todas las cartas están combinadas en una única escalera del mismo palo.
- Cerrar la partida con Color, si todas las cartas son del mismo palo aunque no estén combinadas.
- Decidir cuándo acaba la partida cualquiera de los dos jugadores.
- Mostrar las cartas del jugador Rabino en Excel al acabar la partida.
- Ordenar las cartas combinadas del jugador Rabino en Excel.
- 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 esta variante del Rabino, compatible con las versiones de escritorio desde Excel 2010 hasta Excel para Microsoft 365.
- Sites Google Drive: RABINO - PW8.xlsm
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
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.