几种状态机实现形式

状态机(State Machine),在电气,电子行业应用比较多。对于程序员,尤其是在应对流程复杂的业务逻辑时也非常有用。大多情况下,只要设计出良好的状态图,就可以机械地将其翻译成代码。状态机的概念分支其实很复杂,中文其实没有正确的翻译所有术语,比如automata。我没有能力涵盖所有内容,以下只是笼统的讲一点理论和形式。

基本概念

游戏编程有个概念,触发器(是Trigger不是电子中的Flip-flop)。它核心的两个概念,事件(Event)和动作(Action),有时候可选的加上环境(Environment)/ 条件(Condition/Criterea)。下面是个简化的实例:

大多格斗游戏,输入“↓→A”,会发出波动拳,像街头霸王的Ken。对触发器来说,“↓→A”就是事件,波动拳就是动作。但在浮空和倒地时不能发出波动拳,这两个就可以算作环境或条件。再之后,释放的波动拳又可以作为触发下一个动作的事件。

Continue reading 几种状态机实现形式