狀態機小記

2021-07-22 19:30:46 字數 607 閱讀 9477

工作上有個功能模組用到了類似狀態機的東東,於是上網科普了一番。狀態機是由一系列輸入驅動,然後系統由其中一種狀態轉換為另一種狀態並產生某種輸出,這樣子的乙個系統叫做狀態機。狀態機分為兩種,一種是輸出只和系統狀態有關,叫做摩爾狀態機,另一種是輸出和輸入以及系統狀態都相關,叫做公尺莉狀態機。有關輸入、狀態和輸出的關係,相對來說比較複雜,暫且不述。僅就舉兩個簡單的例子說明啥是狀態機。

乙個控制台程式,從頭到尾執行一遍,啥也不用管,這就不是狀態機。乙個控制台程式執行過程中會讓你輸入yes或no,這就可以看作是最簡單的狀態機。當輸入yes時它轉到了一種狀態,可能是執行一部分**,當輸入no時它轉到了另一種狀態,可能是執行了另一部分**或者乾脆退出了,這也是一種狀態,叫做終止狀態。每乙個狀態機都會有乙個起始狀態和乙個終止狀態。windows程式則是乙個相對更複雜的狀態機,會處理各種各樣的介面輸入,內部狀態也是千頭萬緒。

如果能把乙個業務邏輯簡化成狀態機,那就可以比較簡單地處理,程式結構也比較清晰了。再舉個例子,乙個網路象棋遊戲,對於每乙個客戶端來說都是乙個狀態機,它有等待、閒逛、入局、參觀等狀態,有加入、退出等動作(輸入)當客戶端處在等待狀態時,另乙個客戶端對它執行了加入的動作,那麼處於等待狀態的客戶端便轉移到了入局的狀態,其它以此類推,這樣一處理,邏輯上便清晰了很多。

qt 狀態機小記

狀態機 狀態 訊號 狀態機框架與qt的元物件系統是緊密結合的,例如qt的事件系統用來驅動狀態機,狀態機中狀態間的切換可以由訊號來觸發。關於狀態機可以參考the state machine framework關鍵字。如下的示例中,狀態機被乙個按鈕控制,包含3個狀態s1 s2 s3,s1為初始狀態,當單...

狀態機 狀態機0

近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...

python 狀態機 Python 狀態機

class statemachine def init self self.handlers 狀態轉移函式字典 self.startstate none 初始狀態 self.endstate 最終狀態集合 引數name為狀態名,handler為狀態轉移函式,end state表明是否為最終狀態 de...