2010-09-23 29 views
16

Estoy dispuesto a desarrollar un juego de fútbol para Android.Máquina de estados finitos (FSM) y Android de Java

Debido a la complejidad de la IA, realmente creo que necesito diseñarlo usando un FSM (Máquina de estados finitos) y no con un interruptor de monstruo.

Buscando en Google Encontré algunos FSM escritos en Java, pero nada explícitamente compatible con Android: Me pregunto si hay alguien aquí que usó un FSM antes para esa plataforma.

+0

¿Está construida con Maven? –

Respuesta

2

Android tiene una máquina de estado jerárquica interna (HSM), que se integra con la cola de mensajes de Android.

Es interno, por lo que no puede acceder a él explícitamente desde el SDK.

Sin embargo, si sigue los términos de la licencia de Apache 2.0 puede crear su propia versión.
https://android.googlesource.com/platform/frameworks/base/+/gingerbread-release/core/java/com/android/internal/util/HierarchicalStateMachine.java

Editar:
Esta clase se llama ahora StateMachine.

+0

Terminé haciendo lo mío. Quería poder declarar una tabla de transición de estado en código. https://github.com/olibye/guvna – byeo

8

Hace unos meses estaba buscando un FSM para Android pero no encontré nada adecuado, así que tuve que crear el mío.

Lo usé en algunos proyectos hasta ahora y estoy bastante contento. Hace que el código sea mucho más limpio y fácil de usar. Si alguien todavía está buscando una máquina de estados para java, marque EasyFlow.

Puede contribute para el proyecto también.

+0

el proyecto ya no es compatible, perdí mi tiempo –

+0

Echa un vistazo en este http://stackoverflow.com/a/43964422/2267723 –

1

Esta implementación de máquina de estados (FSM) utilizada en Android y provista por Google parece ser una buena opción. Puede obtenerlo here on Github.

Puede usar la clase StateMachine para definir estados, el estado inicial, puede realizar tareas cuando ingresa o sale de un estado, puede enviar eventos y eventos retrasados ​​para implementar tiempos de espera, por ejemplo.

No encontré muchas otras alternativas, pero esta implementación contiene todas las características que estaba buscando. Esto es parte del proyecto de Android, así que supongo que fue una buena prueba. Espero que esto ayude.

Cuestiones relacionadas