keystate 狀態類
namespace fsm
#endregion
///
/// 子狀態名稱拼接符
///
public
const
char childsplitchar =
'\\'
;///
/// 狀態名
///
private
string _name;
///
/// 狀態名稱
///
protected
string name
』符號");
}if(_name !=
value)}
}///
/// 狀態方法
///
protected action changestateaction
///
/// 子狀態
///
protected dictionary<
string
, keystate> childstates
=new
dictionary
<
string
,keystate
>()
;///
/// 獲取子狀態索引
///
///
///
protected
keystate
this
[string statenamepath]
else
} state = _state;}if
(state ==
null
)throw
newexception
($"$找不到指定的狀態");
return state;}}
///
/// 狀態資料上下文
///
public
object currentcontext
protected
keystate()
///
/// 建立狀態機
///
///
///
public
keystate
(string statename, action<
object
> changestateaction)
///
/// 建立帶多個子狀態的狀態機
///
///
///
public
keystate
(string statename,
params keystate[
] childstates)
}///
/// 新增多個子狀態機
///
///
public
virtual
void
addstate
(params keystate[
] multistates)
}///
/// 新增乙個子狀態機
///
///
public
virtual
void
addstate
(keystate state)
狀態")
; childstates.
add(state.name, state);}
///
/// 新增乙個子狀態機
///
///
///
public
virtual
void
addstate
(string statename, action changestateaction)
=>
addstate
(new
keystate
(statename, changestateaction));
///
/// 執行狀態機改變方法
///
///
public
virtual
void
onchangestate
(object context)
}}
keyfsm 狀態管理類
namespace fsm
///
/// 上乙個狀態機完整名稱
///
public
string laststate
///
/// 當前狀態機完整名稱
///
private
newstring name;
///
/// 當前狀態機完整名稱
///
public
string currentstate
}}///
/// 初始化狀態機
///
///
///
public
void
initstate
(string statename,
object context =
null)"
);else
}///
/// 更改狀態
///
///
///
public
void
changestate
(string statename,
object context =
null
)///
/// 更改狀態,更改失敗時回退狀態
///
/// 回退狀態
/// 更改狀態
/// 資料上下文
/// null執行成功,執行失敗,返回異常內容
public
exception
changestate
(string backstatename,
string newstatename,
object context =
null
)catch
(exception exc)
return error;
}///
/// 更改失敗時回退狀態
///
/// 回退狀態
/// 更改狀態
/// 執行失敗,返回異常內容
/// 資料上下文
/// true執行成功,false執行失敗
public
boolean
changestate
(string backstatename,
string newstatename,
outexception exception,
object context =
null
)///
/// 呼叫該方法,無效
///
///
[obsolete
("呼叫該方法,無效"
,true)]
public
override
void
onchangestate
(object context)
}}
狀態機簡單介紹
可以把狀態機的要素分為4個要素,即 現態 條件 動作 次態。現態 和 條件 是因,動作 和 次態 是果。1 現態 是指當前所處狀態 2 條件 又稱為 事件 當條件被滿足時,將會觸發乙個動作,或者執行一次狀態的遷移。3 動作 條件滿足後執行的動作。動作不是必須的,當條件滿足後,也可以不執行任何動作,直...
狀態機 狀態機0
近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...
python 狀態機 Python 狀態機
class statemachine def init self self.handlers 狀態轉移函式字典 self.startstate none 初始狀態 self.endstate 最終狀態集合 引數name為狀態名,handler為狀態轉移函式,end state表明是否為最終狀態 de...