簡單來看,狀態機的抽象核心概念只有乙個——state即狀態,外加乙個統管所有狀態的物件——fsm即狀態機(finite state machine),基本上這兩種class就夠了。然後我們要把邏輯**與狀態機本身的**盡可能分離,目標是讓**規範、統
一、簡潔。 先看我寫的**:#include
#include
#include
#include
#include
using
namespace
std;
//---------------狀態機架構開始----------------------
typedef
int estate;
estate nullstate = -1;
class fsm;
// 狀態的基類
class state
protected:
fsm* fsm = nullptr;
};// 狀態機,統管所有狀態
class fsm
// 需要狀態轉移則呼叫此函式
bool trans(estate newstate)
// 設定初始狀態
void setinitstate(estate s)
// 每幀呼叫
void tick()
};// -----------------實際使用例子開始-----------------
const
int state_idle = 1;
const
int state_attack = 2;
const
int state_gohome = 3;
// 實際應用,有三個具體的狀態,都從state繼承,然後分別實現自己的enter、tick、exit函式
class stateidle : public state
int test_counter = 0;
void onstateenter()
void onstatetick()
}void onstateexit()
};class stateattack : public state
void onstateenter()
void onstatetick()
void onstateexit()
};class stategohome : public state
void onstateenter()
void onstatetick()
void onstateexit()
};int main()
return0;}
本**沒有delete、沒有錯誤防範,僅演示思路,可以隨意複製使用但本人不對後果負責。 本**已經盡可能精簡了,必要的記憶體釋放都沒寫,但是寫測試用例怎麼也短不下來,本來計畫寫100行以內,最後還是多出來50行。
狀態機 狀態機0
近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...
python 狀態機 Python 狀態機
class statemachine def init self self.handlers 狀態轉移函式字典 self.startstate none 初始狀態 self.endstate 最終狀態集合 引數name為狀態名,handler為狀態轉移函式,end state表明是否為最終狀態 de...
狀態機小記
工作上有個功能模組用到了類似狀態機的東東,於是上網科普了一番。狀態機是由一系列輸入驅動,然後系統由其中一種狀態轉換為另一種狀態並產生某種輸出,這樣子的乙個系統叫做狀態機。狀態機分為兩種,一種是輸出只和系統狀態有關,叫做摩爾狀態機,另一種是輸出和輸入以及系統狀態都相關,叫做公尺莉狀態機。有關輸入 狀態...