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 12:07] – 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 79: | Línea 86: | ||
| ### 🟠 NPC Tímido | ### 🟠 NPC Tímido | ||
| - | Es el más complejo. | + | 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 **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). | - 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). | ||
| Línea 94: | Línea 101: | ||
| {{: | {{: | ||
| - | Puedes ver y ejecutar el ejemplo en este {{ : | + | Puedes ver y ejecutar el ejemplo en este {{ : |
public/vj1231/fsm/start.1791288437.txt.gz · Última modificación: por mperez
