18

我愿意为Android开发一款足球游戏。

因为人工智能的复杂性,我真的认为我需要使用FSM(有限状态机)而不是怪物开关来设计它。

谷歌搜索我发现了一些用 Java 编写的 FSM,但没有与 Android 明确兼容:我想知道这里是否有人在该平台上使用过 FSM。

4

5 回答 5

8

几个月前我一直在寻找适用于 Android 的 FSM,但找不到合适的东西,所以不得不自己创建。

我现在在几个项目中使用它并且非常高兴。它使代码更加简洁并且易于使用。如果有人还在寻找 Java 的状态机,请查看EasyFlow

您也可以为该项目做出贡献

于 2013-04-16T01:39:57.250 回答
6

Android 有一个内部分层状态机 (HSM),它与 ​​Android 消息队列集成。

它是内部的,因此您无法从 SDK 显式访问它。

但是,如果您遵循 Apache 2.0 许可证的条款,您可以制作自己的版本。
https://android.googlesource.com/platform/frameworks/base/+/gingerbread-release/core/java/com/android/internal/util/HierarchicalStateMachine.java

编辑:
这个类现在称为StateMachine

于 2011-02-23T14:55:23.843 回答
3

在 Android 中使用并由 Google 提供的这种状态机 (FSM) 实现似乎是一个不错的选择。你可以在 Github 上获得它。

您可以使用StateMachine该类来定义状态,初始状态,您可以在进入或退出状态时执行任务,您可以发送事件和延迟事件以实现例如超时。

我没有找到很多其他替代方案,但是这个实现包含了我正在寻找的所有功能。这是 Android 项目的一部分,所以我认为这是经过良好测试的。希望这有帮助。

于 2016-07-14T20:12:16.107 回答
1

你可以试试我的带有 DSL 的 Kotlin 库来创建状态机。它在 Android 项目中帮助我。

https://github.com/nsk90/kstatemachine

于 2021-02-26T22:21:27.707 回答
0

另一个开源选项是@doridori的Engine

于 2016-07-15T14:27:16.990 回答