狀態機小結

2021-08-14 20:12:26 字數 1485 閱讀 2304

簡單來看,狀態機的抽象核心概念只有乙個——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...

狀態機小記

工作上有個功能模組用到了類似狀態機的東東,於是上網科普了一番。狀態機是由一系列輸入驅動,然後系統由其中一種狀態轉換為另一種狀態並產生某種輸出,這樣子的乙個系統叫做狀態機。狀態機分為兩種,一種是輸出只和系統狀態有關,叫做摩爾狀態機,另一種是輸出和輸入以及系統狀態都相關,叫做公尺莉狀態機。有關輸入 狀態...