2010-09-23 9 views
16

Ich bin bereit, ein Fußballspiel für Android zu entwickeln.Finite State Machine (FSM) und Android Java

Da die Komplexität der AI, ich glaube wirklich, ich muss es mit einem FSM (Finite State Machine) und nicht mit einem Monster-Schalter zu entwerfen.

Googeln herum ich fand einige FSM in Java geschrieben, aber nichts explizit kompatibel mit Android: Ich frage mich, ob es hier jemanden gibt, der eine FSM für diese Plattform verwendet.

+0

Stehen Sie mit Maven gebaut? –

Antwort

2

Android verfügt über eine interne Hierarchische Statusmaschine (HSM), die in die Android-Nachrichtenwarteschlange integriert ist.

Es ist intern, Sie können also nicht explizit über das SDK darauf zugreifen.

Wenn Sie jedoch die Bedingungen der Apache 2.0-Lizenz befolgen, können Sie Ihre eigene Version erstellen.
https://android.googlesource.com/platform/frameworks/base/+/gingerbread-release/core/java/com/android/internal/util/HierarchicalStateMachine.java

Edit:
Diese Klasse jetzt StateMachine genannt wird.

+0

Ich landete mein eigenes. Ich wollte eine Zustandsübergangstabelle im Code deklarieren können. https://github.com/olibye/guvna – byeo

8

Ich war vor ein paar Monaten auf der Suche nach einem FSM für Android, konnte aber nichts passendes finden, also musste ich mein eigenes erstellen.

Ich habe es in einigen Projekten und jetzt ziemlich glücklich. Es macht Code viel sauberer und ist einfach zu bedienen. Wenn jemand noch nach einer Zustandsmaschine für Java sucht, überprüfen Sie EasyFlow heraus.

Sie können contribute zu dem Projekt auch.

+0

das Projekt wird nicht mehr unterstützt, verschwendet meine Zeit –

+0

Werfen Sie einen Blick auf diese http://StackOverflow.com/A/43964422/2267723 –

1

Diese State Machine (FSM) Implementierung in Android verwendet und von Google zur Verfügung gestellt scheint eine gute Option zu sein. Sie können es erhalten here on Github.

Sie können die Klasse StateMachine verwenden, um Zustände zu definieren, das Anfangszustand, Sie können Aufgaben ausführen, wenn Sie einen Zustand betreten oder verlassen, Sie können Ereignisse und verzögerte Ereignisse senden, um beispielsweise Timeouts zu implementieren.

Ich habe nicht viele andere Alternativen gefunden, aber diese Implementierung enthält alle Funktionen, die ich gesucht habe. Dies ist Teil des Android-Projekts, also nehme ich an, dass dies gut getestet wurde. Ich hoffe das hilft.