Seguramente alguna vez has jugado piedra, papel o tijera… ¿ que pensarías si te digo que también lo puedes jugar en excel, tu contra la computadora…?
Pues he desarrollado este juego en un libro de excel, he usado formulas y código VBA, tu seleccionas la cantidad de tiradas a jugar, seleccionas tu jugada ( piedra papel o tijera ) das click en jugar y sen las manos en movimiento, entonces el PC selecciona su opción y se muestran las dos para ver quien gana, arriba veras el resultado, al final de las tiradas se define el ganador o empate si es el caso.
Como se obtiene la imagen según la opción seleccionada.
El el post buscar imagen con formula y macro explicamos como hacer ese procedimiento
Para obtener la imagen que corresponde a la jugada seleccionada, se usa una lista con nombres y las imágenes correspondientes, cada imagen tiene un nombre y una referencia, esa referencia se obtiene con la función buscarv desde el tablero de juego, a su vez esa referencia es igual al nombre que se le dio a la celda donde esta cada imagen.
Aprovechando lo anterior, se usa la función indirecto para hacer referencia a esa celda donde esta la imagen, esta función, se pone un nuevo nombre de rango en la celda donde se ha puesto la función buscarv, luego en la sección de se refiere a: en el nombre de rango nuevo, se pone la función indirecto para obtener la referencia a la imagen.
La función indirecto genera una referencia hacia la celda que contiene la imagen, pero eso no es suficiente para mostrarla, para ello es necesario insertar un control de imagen en la hoja, para ello debes ir a la ficha programador, click en insertar, en controles ActiveX seleccionar la opción de imagen y dibujarlo en la hoja, en la sección de formulas debe hacer referencia al nombre de rango donde se puso la función INDIRECTO, de ese modo traerá la imagen en ese control de imagen. ( el control de imagen debe estar seleccionado para hacer lo anterior ).
Como se genera el movimiento de las imágenes
Para el movimiento de las imágenes como cuando se juega en la vida real, se usa un ciclo for que repite tres veces el proceso para que se vea el movimiento, en realidad solo esta alternando entre una imagen con la mano hacia arriba y otra hacia abajo, en el archivo podrán ver el código.
Como se obtiene la jugada de la computadora
La jugada de la computadora se obtiene usando una función para generar aleatorios entre 1 y 3, también se usa el equivalente a la función buscarv pero en código, en el libro pueden ver una hoja llamada lista, en esa hoja están las tres opciones con sus respectivos números del 1 al 3, en esa tabla es donde se hace la búsqueda desde vba.
Como se obtiene al ganador de cada tirada
Para obtener al ganador de cada tirada solo se hace la comparación de la jugada seleccionada por el jugador y la del PC, esta es la formula completa.
=SI(Y(puntosyo=puntospc,tiradas=0),”Empataste con el PC”,SI(Y(puntosyo>puntospc,tiradas=0),”Le ganaste al PC”,SI(Y(puntosyo<puntospc,tiradas=0),”Perdiste con el PC”,SI(L9=””,””,SI(jugadayo=L9,”Empate”,SI(Y(jugadayo=”Piedra”,L9=”Tijera”),”Ganaste”,SI(Y(jugadayo=”Papel”,L9=”Piedra”),”Ganaste”,SI(Y(jugadayo=”Tijera”,L9=”Papel”),”Ganaste”,”Perdiste”))))))))
Esa misma formula también obtiene al ganador cuando se han terminado las tiradas.
El juego lo realice en una tarde y funciona bien, aunque se puede mejorar, espero sus comentarios y cualquier sugerencia para mejorarlo, de igual modo estaré subiendo cualquier actualización.