Herramientas de usuario

Herramientas del sitio


public:vj1231:fsm:start

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
public:vj1231:fsm:start [2026/10/06 12:08] – [🟠 NPC Tímido] mperezpublic:vj1231:fsm:start [2026/10/13 16:42] (actual) – [Componentes de la FSM] mperez
Línea 1: Línea 1:
-====== Máquinas de estado finitos ======+====== Máquinas de Estados Finitos ======
  
 Una Máquinas de estado finitos (FSM, por sus siglas en inglés) es un modelo matemático compuesto por:  Una Máquinas de estado finitos (FSM, por sus siglas en inglés) es un modelo matemático compuesto por: 
Línea 24: Línea 24:
 Las ventajas de este modelo es que cada estado encapsula su lógica lo que lo hace fácil de extender ya que  añadir un nuevo estado solo requiere una nueva clase y evita grandes bloques de if/else que hacen el código ilegible. Las ventajas de este modelo es que cada estado encapsula su lógica lo que lo hace fácil de extender ya que  añadir un nuevo estado solo requiere una nueva clase y evita grandes bloques de if/else que hacen el código ilegible.
  
-====== Componentes de la FSM ======+====== Enfoque orientado a Objetos ======
 ===== class State: ===== ===== class State: =====
  
Línea 60: Línea 60:
 ===== Transiciones entre estados ===== ===== Transiciones entre estados =====
  
-Hay que definir para cada estado un diccionario denominado transitions con el evento que provoca una transición y a qué estado se mueve.+ 
 +Las transiciones de un estado a otros se pueden definir en el método ''get_next_state_class(self, event)'' de cada estado.  
 + 
 + 
 +Otras implementaciones definen las transiciones entre estados como un diccionario de pares ''"evento":estado''. Por ejemplo se puede definir para cada estado un diccionario denominado ''transitions'' con el evento que provoca una transición y a qué estado se mueve. 
  
 <code python> <code python>
 # Definir transiciones para NPCTimido # Definir transiciones para NPCTimido
 TimidoPatrolState.transitions = {"player_seen": TimidoChaseState} TimidoPatrolState.transitions = {"player_seen": TimidoChaseState}
 +TimidoChaseState.transitions = {"player_too_close": TimidoFleeState, "player_lost": TimidoPatrolState}
 +...
 </code> </code>
  
Línea 94: Línea 101:
 {{:public:vj1231:fsm:npc_guardia_fsm.svg?600|}} {{:public:vj1231:fsm:npc_guardia_fsm.svg?600|}}
  
-Puedes ver y ejecutar el ejemplo en este {{ :public:vj1231:fsm:fsm.v4.tgz |script de python}}+Puedes ver y ejecutar el ejemplo en este {{ :public:vj1231:fsm:fsm.v4.py.tgz |script de python}}
public/vj1231/fsm/start.1791288494.txt.gz · Última modificación: por mperez