出處: macho狀態機
設計原理:
注意事項:
2.1 entry() exit()不能跳轉狀態;
2.2 跳轉狀態只能調到單方向,不能同時調到兩個方向
2.3 狀態進入:父狀態—>子狀態—>子狀態
2.4 狀態跳出:子狀態—>父狀態—>父狀態
2.5 兄弟狀態跳**a entry—> a exit—> b entry---->b exit
學習示例:
#ifndef simu_h
#define simu_h
#include
using
namespace std;
namespace simustatemachine
public
: basestate *
getstatepoint()
basestate *
getcurrstatepoint()
private
: basestate * mstate;
basestate * curstate;};
/*class subobjholdstate : public objholdsate ;
*/class
substate1
;class
substate2
;class
basestate
*/explicit
basestate
(int type)
basestate()
// exit
~basestate()
;// start
void
start()
;// event handle
virtual
void
event1()
virtual
void
event2()
virtual
void
event3()
public
:// setstate
// s: 0-topstate 1-subsate1 2-substate2
basestate*
setstate
(int s)
;private
: substate1 * msub1;
substate2 * msub2;};
class
substate1
:public basestate
~substate1()
void
init()
};class
substate2
:public basestate
~substate2()
void
init()
};objholdsate::
objholdsate
(basestate *bs)
:mstate
(bs)
,curstate
(bs)
objholdsate::
~objholdsate()
if(null
!= curstate)
}void objholdsate::
setstate
(int state)
basestate::
~basestate()
if(null
!= msub2)
}// initializing a subclass in the constructor of the parent class
// will cause memory allocation to crash
void basestate::
start()
basestate* basestate::
setstate
(int s)}}
#endif
// simu_h
#include
"simu.h"
// using namespace std;
using
namespace simustatemachine;
intmain()
狀態機 狀態機0
近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...
python 狀態機 Python 狀態機
class statemachine def init self self.handlers 狀態轉移函式字典 self.startstate none 初始狀態 self.endstate 最終狀態集合 引數name為狀態名,handler為狀態轉移函式,end state表明是否為最終狀態 de...
狀態機小記
工作上有個功能模組用到了類似狀態機的東東,於是上網科普了一番。狀態機是由一系列輸入驅動,然後系統由其中一種狀態轉換為另一種狀態並產生某種輸出,這樣子的乙個系統叫做狀態機。狀態機分為兩種,一種是輸出只和系統狀態有關,叫做摩爾狀態機,另一種是輸出和輸入以及系統狀態都相關,叫做公尺莉狀態機。有關輸入 狀態...