第二章 网站建设,株洲网站建设费用,湖南建设厅官方网站,php做的网站首页是什么文件夹状态机这个概念已经在网上的博客和论坛中都已经说烂了#xff0c;随便一搜都有一大堆。相关的废话就不多说了#xff0c;在这里主要是分享一下如何可视化的设计状态机#xff0c;如何增强项目的灵活性。这里通过一个生活中的电梯来了解一下状态机。
电梯逻辑如下图#xf… 状态机这个概念已经在网上的博客和论坛中都已经说烂了随便一搜都有一大堆。相关的废话就不多说了在这里主要是分享一下如何可视化的设计状态机如何增强项目的灵活性。这里通过一个生活中的电梯来了解一下状态机。
电梯逻辑如下图 电梯一共五个状态停止门开上升下降超重报警箭头代表相关的事件。
下面通过可视化的编辑器来设计这个状态机 编辑完以后可以立即进行调试右键状态下面的事件即可进行触发完成状态的跳转每个状态都可以添加相应的行为这里主要用打印行为来表现。 状态机编辑完成以后可以导出运行时的状态机后缀为*.runtime_fsm;
在项目中使用可以通过以下代码进行调用 #include Fsm/inc/Fsm.h
#include iostream
using namespace BehaviorTreeRuntime;
int main()
{Fsm* fsm new Fsm();fsm-LoadFromFile(../ProjData/Export/Lift.runtime_fsm);fsm-Start();std::cout 请输入下列事件进行电梯状态切换 Up, Down, Open, Close, Arrive, OverLoad, Normal std::endl;std::string event;while (1){std::cin event;if (event q) break;std::cout 电梯当前状态 ;if (!fsm-HandleEvent(event)){std::cout 电梯不能响应该事件- event std::endl;}}return 1;
}运行结果如下整个过程可以进行可视化的编辑可视化的调试导出加载运行等。。