有限状态机,英文翻译是 Finite State Machine,缩写为 FSM,简称为状态机。状态机有
3 个组成部分:状态(State)、事件(Event)、动作(Action)。其中,事件也称为转
移条件(Transition Condition)。事件触发状态的转移及动作的执行。不过,动作不是必
须的,也可能只转移状态,不执行任何动作。
对于刚刚给出的状态机的定义,我结合一个具体的例子,来进一步解释一下。
“超级马里奥”游戏不知道你玩过没有?在游戏中,马里奥可以变身为多种形态,比如小马
里奥(Small Mario)、超级马里奥(Super Mario)、火焰马里奥(Fire Mario)、斗篷
马里奥(Cape Mario)等等。在不同的游戏情节下,各个形态会互相转化,并相应的增减
积分。比如,初始形态是小马里奥,吃了蘑菇之后就会变成超级马里奥,并且增加 100 积
分。
实际上,马里奥形态的转变就是一个状态机。其中,马里奥的不同形态就是状态机中的“状
态”,游戏情节(比如吃了蘑菇)就是状态机中的“事件”,加减积分就是状态机中的“动
作”。比如,吃蘑菇这个事件,会触发状态的转移:从小马里奥转移到超级马里奥,以及触
发动作的执行(增加 100 积分)。
为了方便接下来的讲解,我对游戏背景做了简化,只保留了部分状态和事件。简化之后的状
态转移如下图所示: