Atendiendo a
un par de comentarios en la entrada de Máquinas recreativas de los 80 en tu Excel que
parece haber suscitado bastante interés, escribo esta nueva entrada. Comenté
que tenía previsto hacer un tetris y hay curiosidad sobre cómo. Son cuatro
ideas sobre cómo hacerlo que hay que depurar y mejorar. Cuando finalmente lo
construya puede que haya encontrado algo mejor, pero son mi primera impresión sobre
por dónde pueden ir los tiros. De hecho, si a alguno de vosotros se le ocurre
alguna mejor está invitado a compartirla con nosotros.
Ante todo
tengo que decir que hace falta utilizar VBA, sin entrar en detalles de código
propongo mi reflexión como ejercicio teórico. En primer lugar, una de las cosas
que me llamó la atención era cómo conseguían los caracteres necesarios para
representar las naves y personajes, (ya que estos no están presentes en
Excel…). Observando uno de los juegos que me he descargado “Space Invaders”, es
más sencillo de lo que parece. Basta con hacer cuadrados las celdas y minimizar
cuanto sea necesario el zoom utilizando el conjunto de celdas preciso para
representar el gráfico deseado.
Como una
imagen vale más que mil palabra, tenemos el
resultado:
Compuesto
por:
En el caso
del tetris, es bastante más evidente, aunque cuando me ponga a hacerlo, lo más
probable es que utilice un UserForm como pantalla, por lo que utilizaré otro
sistema.
Ni que decir
tiene que todas esas celdas que representan cada elemento actúan a partir de
ese momento como una unidad. De este modo, la cuestión de cómo simular el
entorno de la máquina queda resuelto (y es bastante más sencillo de lo que se
podría imaginar…).
Hablaré de
dos cuestiones mas que a primera vista intuyo que son de lo más importante para
la construcción del juego: el movimiento y la determinación de un impacto.
Ambas están relacionadas.
Empezaremos
por el movimiento. Bastaría con cambiar el formato de las celdas a cómo sería
desplazando una celda a la derecha, izquierda,… todo el bloque. Algunas
quedarán como estaban y otras cambiarán: Por ejemplo, en el caso de nuestro
marciano verde avanzando hacia la derecha, desplazaríamos todo el conjunto de celdas
una celda a la derecha así la celda BE73 pasaría a tener fondo negro la celda
BF73 seguiría con fondo verde y la celda BG73 pasaría de fondo negro a fondo
verde. Haciendo este ejercicio en todas las celdas de forma sucesiva tendríamos
el movimiento del marciano.
Para determinar
el impacto es similar. Cada celda donde hay marciano debería tener un valor, y
donde no lo hay estar en blanco. Para determinar si hay impacto bastaría con
comprobar que tras el movimiento todas las celdas ocupan lugares sin datos en
ellas. Si no es así, es que algo se ha interpuesto en su camino, por lo general
un proyectil… En el caso de la bajada de esta pieza del tetris, habría que
comprobar si las celdas J22 y K20 tienen algún valor con lo que se detendrá el
movimiento o están vacías, en cuyo caso puede seguir bajando.
Como he
dicho antes, esto se programa con VBA, no hay posibilidad de hacerlo con los
comandos de Excel propiamente dicho aunque a bote pronto se me ocurre que alguno
podría ayudar como el formato condicional,… si automáticamente cada vez que una
celda cambia de valor se actualiza el formato, tendremos menos que programar.
Bastaría con desplazar conjuntos de números.
Como idea
superficial esto es lo que propongo para hacer de Excel un videojuego, cosa que
por descontado no es la finalidad del programa.
En la
próxima entrada haré un pequeño ejercicio construyendo en Excel una marquesina
en la que se muestre un título en movimiento. Lo haré utilizando un
procedimiento distinto del que planteo para estos juegos pero que creo que
puede por su simplicidad despertar la creatividad de muchos sin ser necesarios
conocimientos profundos de VBA.
No hay comentarios:
Publicar un comentario