有限狀態(tài)機(jī)(FSM)是表示有限個(gè)狀態(tài)及在這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型延窜。在計(jì)算機(jī)領(lǐng)域有著廣泛的應(yīng)用度帮。通常FSM包含幾個(gè)要素:狀態(tài)的管理煞檩、狀態(tài)的監(jiān)控粘招、狀態(tài)的觸發(fā)、狀態(tài)觸發(fā)后引發(fā)的動(dòng)作偎球。
狀態(tài)通常用于組織和表示著執(zhí)行流洒扎,在游戲編碼中可以很好的實(shí)現(xiàn)AI(npc)。例如,在一個(gè)對(duì)打類的游戲中衰絮,可以使用一個(gè)FSM袍冷,用每一個(gè)狀態(tài)表示一個(gè)動(dòng)作,如攻擊或規(guī)避:
一個(gè)FSM可以已圖片的方式展現(xiàn),節(jié)點(diǎn)表示狀態(tài)和邊界表示轉(zhuǎn)換。每個(gè)邊上都有一個(gè)標(biāo)簽信息表示轉(zhuǎn)換的條件,例如上圖中玩家在附近的標(biāo)簽表明當(dāng)玩家在附近附近時(shí)當(dāng)前狀態(tài)將從漫步狀態(tài)轉(zhuǎn)換到攻擊狀態(tài)猫牡。
螞蟻搬家的例子胡诗,如果螞蟻在發(fā)現(xiàn)樹葉后遇到鼠標(biāo)光標(biāo)不逃離的話,圖片和源碼可以以下面的方式簡(jiǎn)單的實(shí)現(xiàn):