OpenFSM
一个简单易用的C++有限状态机。
https://github.com/OpenMiniServer
编译和执行
请安装cmake工具,用cmake构建工程,可以在vs或者xcode上编译运行。
源代码:https://github.com/OpenMiniServer/openfsm
#克隆项目
git clone https://github.com/OpenMiniServer/openfsm
cd ./openfsm
#创建build工程目录
mkdir build
cd build
cmake ..
#如果是win32,在该目录出现openfsm.sln,点击它就可以启动vs写代码调试
make
./test
全部源文件
- src/openfsm.h
- src/openfsm.cpp
有限状态机设计星舰
星舰有四种状态:地面压力测试(StateTest),点火发射升空(StateLaunch),回收返航(ActionReturn)和发射失败(StateFailure)。
每一个状态由几个行为组成。这样,多个行为组成一个状态,多个状态组成一个状态机。
- 地面压力测试(StateTest):引擎测试(ActionTestEngine)和燃料罐测试(ActionTestTank);
- 点火发射升空(StateLaunch):星舰点火(ActionFireUp)和发射升空(ActionLaunch);
- 回收返航(ActionReturn):返回地面回收(ActionReturn);
- 发射失败(StateFailure):发射失败(ActionFailure);
状态切换。有两种状态切换。
- 地面压力测试(StateTest)如果成功,就切换到点火发射升空(StateLaunch),否则,切换到发射失败(StateFailure)
- 点火发射升空(StateLaunch)如果成功,就切换到回收返航(ActionReturn),否则,切换到发射失败(StateFailure)
在创建状态机之前,先进行动作注册。
OpenFSM::RegisterAction<ActionTestEngine>("ActionTestEngine");
OpenFSM::RegisterAction<ActionTestTank>("ActionTestTank");
OpenFSM::RegisterAction<ActionFireUp>("ActionFireUp");
OpenFSM::RegisterAction<ActionLaunch>("ActionLaunch");
OpenFSM::RegisterAction<ActionReturn>("ActionReturn");
OpenFSM::RegisterAction<ActionFailure>("ActionFailure");
选择一组动作,组成一个状态。共四个状态。
OpenFSM::RegisterState("StateTest", { "ActionTestEngine", "ActionTestTank" }, EStateTest);
OpenFSM::RegisterSt


1340

被折叠的 条评论
为什么被折叠?



