游戏中的人工智能(一):有限状态机

先从有限状态机说起。

   什么是有限状态机?

   有限状态机是一种模拟现实生活中人或者动物思考的一种模型。我们在思考过程中总是随着外界环境的变化或者内在因素的变化而进入一种状态,而相应的状态会触发相应的行为,我们总是处于这样那样的状态,并且不停切换。如早上天气冷,进入冷的状态,当处于冷的状态时,大脑就会做出加衣服、开热气等操作,到了中午太阳出来了,又会热起来,这个时候你会处于一种热的状态,并做出脱衣等反应。这是我个人的理解。

    在Mat.Buckland编著的著名的书籍《游戏人工智能编程案例精粹》里,他是这么定义的。有限状态机是一个设备模型,它具有有限数量的状态,它可以在任何给定的状态根据输入进行操作,从一个状态变换到另一个状态,并促使相应的行为的发生。

   如何实现一个有限状态机?

   简单幼稚的实现方式是用if else或者switch。优点是容易实现,缺点是应对复杂的情形,代码会相当的恶心——程序流程的跳转会非常快,不容易理解,会像面条一样缠绕纠结

   使用状态转换表

   

    把条件或者说思考嵌入到状态里。下面是实现的类图。

   

 

   如何让对象互相交流——给FSM增加消息功能?

   直接上类图

猜你喜欢

转载自langlanglanglang.iteye.com/blog/2108287