Haced una imagen mental de una hoja de cálculo:
- En la celda A1 aparece la última tecla pulsada.
- En la celda A2 hay una fórmula que da 1 cuando la celda A1 es la tecla derecha IF(A1=33;1;0).
- En la celda B1 se pone a 1 cuando hay un obstáculo a la derecha del personaje y a 0 cuando no.
- La celda C1 es la formula A2 AND NOT B1. Con lo cual esta celda se pone a 1 cuando se está pulsando la tecla derecha y no hay ningún obstáculo a la derecha del personaje.
- Por último ya sólo faltaría que mientras C1 esté a 1 hay que mover el sprite del personaje a la derecha.
¿Que conseguimos dividiendo el programa de esta forma? Un programa mucho más modular, con menos interdependencias entre los módulos y con una gran facilidad de añadir condiciones sin tener que incrementar la complejidad del programa.
Una celda contiene un valor o una fórmula basada en otras celdas. Cuando el valor de una celda cambia, todas las otras celdas conectadas actualizan su valor de forma totalmente transparente. También podemos añadir observadores a las celdas que nos informen de cuando el valor se ha cambiado y así poder actuar en consecuencia.
En resumen; estoy hablando de como se podría aplicar la programación basado en celdas a los videojuegos.
No conozco ninguna librería para C/C++ pero podéis trastear con Cells para lisp o los models para factor (ya viene por defecto en la librería). Otra opción, aunque ya se aleja un poco de la idea original, es tirar de alguna librería orientada a aspectos para C++.
Este era un ejemplo bastante sencillo pero la gama de posibilidades que ofrecen las celdas es apabullante. En el caso de Cells, se ha usado, entre otras cosas, para implementar todo un sistema GUI encima: Cello.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario