首页 > 代码库 > 卅川的状态机之路(创作中,不定时上传)
卅川的状态机之路(创作中,不定时上传)
川的第一篇干货,将从讲述FSM(有限状态机)开始。
川第一次接触状态机这种东西,还得追溯到刚到畅游工作,破解了别的游戏的代码(游戏程序就是这么没节操和底线,嗯!)才知道有这么个东西的。虽然大学学习过相关思想,可是第一次见了真材实料还是很震撼的(请原谅我用"震撼"这个词,因为我理想中的程序,就应该和机械一样各司其职分工明确,然后才能正确运行得到结果)。
现在有很多论调,当然集中的也只是一些特定的环境下,有限状态机已经不合时宜了,觉得低效且无法完整实现功能(比如最近就看过几篇文章,关于游戏AI,大家似乎对之前使用FSM去实现很有些看法)。可是正如排序算法一样,快排再快,也一样有去写选择排序的人(仅仅是打比方,非要跟我掰扯快排和选择的速度和应用场景我也没办法)。FSM并不一定执行效率最高,但是以工程的角度来看,FSM却可以比较清晰地阐述程序运行流程(请注意"比较",因为我也见过一个总逻辑分成2-30个状态的,那就简直是天书了)。
所以,来看一个核心问题:什么是有限状态机?川不想去网上搬一堆关于有限状态机的定义,他们都对,但是并不是我的思想。
FSM(Finite-state machine)是有限状态机的缩写,全称中的machine,那可是机器啊喂!所以还想什么呢,FSM就是一台用代码构建的机器呀(不得不说,我到现在都对工程制图学念念不忘,漂亮机械图纸在我眼中就是艺术品)!既然是机器,它就会运转,去完成它在被设计制造出来之后被赋予的任务。举个栗子:城市道路都愿意开自动挡(因为省事儿呀,面对堵车时候那一脚又一脚的离合绝对是对左腿强有力的锻炼),它的变速箱就是一台机器,它需要在我们开车时根据我们行驶的路况、速度变更不同的挡位(否则要么发动机带不动汽车,要么就等着烧机油吧,哈哈)。
好吧,扯了一堆有的没的。状态机就是在不同的状态不同的条件下,去执行对应状态或条件下代码的机器(如有需要,请自行深入了解,摊手)。
卅川的状态机之路(创作中,不定时上传)