可视化的状态机(FSM)
生活随笔
收集整理的這篇文章主要介紹了
可视化的状态机(FSM)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? 狀態機這個概念已經在網上的博客和論壇中都已經說爛了,隨便一搜都有一大堆。相關的廢話就不多說了,在這里主要是分享一下如何可視化的設計狀態機,如何增強項目的靈活性。這里通過一個生活中的電梯來了解一下狀態機。
電梯邏輯如下圖:
電梯一共五個狀態,停止,門開,上升,下降,超重報警,箭頭代表相關的事件。
下面通過可視化的編輯器來設計這個狀態機:
編輯完以后可以立即進行調試,右鍵狀態下面的事件即可進行觸發完成狀態的跳轉,每個狀態都可以添加相應的行為,這里主要用打印行為來表現。
狀態機編輯完成以后可以導出運行時的狀態機(后綴為*.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; }運行結果如下:
整個過程可以進行可視化的編輯,可視化的調試,導出,加載,運行等。。
總結
以上是生活随笔為你收集整理的可视化的状态机(FSM)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CRT
- 下一篇: Impala UDF - Impal