public:vj1231:fsm:start
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| public:vj1231:fsm:start [2026/10/06 11:45] – mperez | public: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. | ||
| - | ====== | + | ====== |
| ===== 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 '' | ||
| + | |||
| + | |||
| + | Otras implementaciones definen las transiciones entre estados como un diccionario de pares ''" | ||
| <code python> | <code python> | ||
| # Definir transiciones para NPCTimido | # Definir transiciones para NPCTimido | ||
| TimidoPatrolState.transitions = {" | TimidoPatrolState.transitions = {" | ||
| + | TimidoChaseState.transitions = {" | ||
| + | ... | ||
| </ | </ | ||
| Línea 71: | Línea 78: | ||
| En esta imagen se muestra el comportamiento de tres NPCs distintos modelados usando FSM. Los estados se muestran en azul los eventos que provocan las transiciones entre estados aparecen sobre las flechas. | En esta imagen se muestra el comportamiento de tres NPCs distintos modelados usando FSM. Los estados se muestran en azul los eventos que provocan las transiciones entre estados aparecen sobre las flechas. | ||
| - | {{: | + | ### 🟢 NPC Normal |
| + | |||
| + | Es el más simple: solo decide entre perseguir o patrullar según si detecta al jugador. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ### 🟠 NPC Tímido | ||
| + | |||
| + | Su comportamiento cambia drásticamente dependiendo de si está en " | ||
| + | - Si **está en alerta**, prioriza su seguridad (huye hacia un guardia o completa un informe). | ||
| + | - Si **no está en alerta**, se comporta de forma más agresiva (inicia la alerta si el jugador está cerca, o lo sigue si está lejos). | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ### 🔵 NPC Guardia | ||
| + | |||
| + | tiene un comportamiento intermedio. Si no ve al jugador, actúa como un " | ||
| - | {{: | ||
| - | {{: | + | {{: |
| - | Puedes ver y ejecutar el ejemplo en este {{ : | + | Puedes ver y ejecutar el ejemplo en este {{ : |
public/vj1231/fsm/start.1791287154.txt.gz · Última modificación: por mperez
