Llamo máquinas de estados a la implementación del patrón State o State
Machine ( si tenéis el libro del Gang of Four, lo podeis ver en la página
279 -ed. en castellano de Addison Wesley-, dentro del capítulo de patrones
de Comportamiento, a los que yo me referí en uno de los primeros e-mails ).

El patrón básicamente consiste en que la lógica de las entidades no es un
comportamiento único, sino un conjunto de estados relacionados entre sí, y
que la máquina de estados se encarga de hacer transitar ( o no ) de un
estado a otro. Es decir, que abstrae el comportamiento de la implementación
de la entidad ( en este caso el móvil )

Ejemplo:

Una pelota a una altura determinada. Su comportamiento se puede definir
definiendo una serie de estados ( "estadoInicialEnPotencial",
"estadoMovimiento", "estadoColisión" ). La máquina de estados puede
transitar de un estado a otro ( utilizando una serie de transiciones ). En
cada estado se ejecuta un callback.

En este ejemplo, el primer estado tiene agregada una transición hacia el
estado de movimiento. En esa transición se chequearía si la energía
potencial es mayor que cero. Si lo es, transita al siguiente estado, que es
el de movimiento. Ahora habría una autotransición de movimiento a
movimiento, hasat que se llegue a una altura cero, en la que se transita al
siguiente estado...... En fin, creo que es suficiente para coger la idea.

Así se hacen los juegos AAA ( Commandos, FIFA, Quake, etc ), entre otras
muchas aplicaciones. No es que no se pueda hacer de otra manera, que se
puede, pero en el caso del proyecto del que he hablado desde el principio,
ésta arquitectura es la que permite maximizar el código común. En este caso,
da igual que sea un balón o un avión o un jugador de fútbol, lo único que me
importa es que otra entidad distinta al móvil ( que es el tween manager ) me
diga cual será su siguiente posición. Y mi máquina de estados se encargará
de mandar al móvil que se coloque. Y habrá un mundo con su propia máquina de
estados ( la lógica global del juego ) que a su vez agregará a todas las
entidades del mismo. Y si alguien no lo ve claro, que piense en el FIFA
programado en base a enterFrame de los jugadores.

Espero que por fin, con esta explicación quede claro.

Y por cierto, esto ya es entrar en filosofía de la física, pero es el mundo
el que marca las leyes básicas de la física, no las entidades individuales.
Si fueran las entidades individuales las que definieran su comportamiento
físico, éste variaría de una entidad a otra ( no es el mejor argumento, pero
es uno de los primeros que utilizó, por ejemplo Arquímedes ).

Si aún seguís pensando lo mismo....

De todas formas, quiero volver a reforzar mi argumento básico, que es que la
herencia a toda costa no siempre es la mejor opción. El ejemplo de las
máquinas de estados es un ejemplo concreto, por supuesto, pero no es el
único. Como espero que ya haya quedado claro.

Oye, ¿ descansamos un poco ?


César Tardáguila
[EMAIL PROTECTED]

-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre
de Joseba Alonso
Enviado el: domingo, 30 de mayo de 2004 19:51
Para: Lista ASNativos
Asunto: Re: [ASNativos] Crear la clase Menu AS2

No se que es exactamente a lo que llamas maquina de estados. Pero moverse
desde luego no es un estado, es un comportamiento.

De todas maneras no creo que llegemos mas alla, pero siguiendo el ejemplo, y
segun tu teoria el mundo es el encargado de mover a los animales, si un
animal se tiene que mover, se lo tiene que decir al mundo para que le
aplique las leyes fisicas y cambie su posicion. "oye mundo, que quiero ir al
bar de la esquina"

Sin embargo yo pienso que al mundo le da igual lo que se mueva o deje de
moverse, son los animales los que se mueven y deben usar las leyes fisicas
para hacerlo. Ellos se tienen que preocupar de las fuerzas, como la gravedad
y sabiendo la masa y el volumen que tienen podran calcular la fuerza que
tienen que aplicar para poder moverse en la direccion que quieren.

Creo que hemos llegado a un punto muerto. Tu vas a seguir pensando lo mismo
y nosotros seguiremos pensando lo contrario. Creo que no quedan mas
argumentos nuevos. ¿ o si?


Joseba Alonso
www.sidedev.net
www.5dms.com

----------------------------------
Lista ASNativos:[EMAIL PROTECTED]
http://www.5dms.com/listas
----------------------------------


----------------------------------
Lista ASNativos:[EMAIL PROTECTED]
http://www.5dms.com/listas
----------------------------------

Responder a