cn_x 发表于 2014-9-2 11:17:16

转一篇关于状态机的文章,让大家简单认识状态机

本帖最后由 cn_x 于 2014-9-3 08:20 编辑

花5分钟告诉你什么是有限状态机
原文地址:http://blog.csdn.net/musicvs/article/details/8348308
编辑原因:1、添加附件文章《用状态机原理进行软件设计》                2、补充QP状态机官网链接:http://cn.state-machine.com/


正文:
1. 简单认识在游戏开发中,状态机几乎是必不可少的,关于状态机的专业解释,大家请百度一下。
简单地说,状态机就是控制游戏对象在不同的状态下应该做什么事情的一个机制(帅帅地提示一下,它很强大,强大到你无法想象~)(旁白:= =大家别信他,木头常常说谎)
2. 来写一个很好玩的游戏吧~比如,我们要写一个很厉害很好玩的游戏,这个游戏的设想是这样的:游戏世界里有一个木头,这个木头很多兴趣爱好。比如,他一有空就会写代码,写累了他就会停下来,然后...敲代码,敲累之后,他就会...写代码。可有时候他会突发奇想地要写一篇教程,因为他刚刚学会了新知识迫不及待的要分享。就是这样,一个兴趣爱好广泛的木头,每天都干着这些多姿多彩的事情。
(旁白:很多兴趣爱好?我怎么看来看去就看到写代码? = =)
3. 开始进入正题那么,这个木头有这么多种状态,我们应该怎么用程序去实现这个逻辑呢?对了~!就是用状态机。刚刚只是开了一个玩笑,写代码和敲代码是同一件事情,木头只有两种状态:写代码和写教程,以及休息。(旁白:你可爱的妹纸的...不是说只有两种状态吗?)
4. 木头类代码

[*]/*
[*]    文件名:    Mutou.h
[*]    描 述:    木头角色
[*]    创建人:    笨木头 (CSDN博客:http://blog.csdn.net/musicvs)
[*]
[*]    创建日期:   2012.12.16
[*]*/
[*]#ifndef __MUTOU_H__
[*]#define __MUTOU_H__
[*]
[*]#include "cocos2d.h"
[*]USING_NS_CC;
[*]
[*]enum EnumState{
[*]    enStateWriteCode,       /* 状态:写代码 */
[*]    enStateWriteArticle,    /* 状态:写教程 */
[*]    enStateRest,            /* 状态:休息 */
[*]};
[*]
[*]class Mutou : public CCNode {
[*]public:
[*]    CREATE_FUNC(Mutou);
[*]    virtual bool init();
[*]
[*]    /* 当前状态 */
[*]    EnumState enCurState;
[*]
[*]    /* 判断是否写代码写累了 */
[*]    bool isTire();
[*]
[*]    /* 是否想写教程 */
[*]    bool isWantToWriteArticle();
[*]
[*]    /* 写代码 */
[*]    void writeCode();
[*]
[*]    /* 写教程 */
[*]    void writeArticle();
[*]
[*]    /* 休息 */
[*]    void rest();
[*]
[*]    /* 切换状态 */
[*]    void changeState(EnumState enState);
[*]
[*]
[*]    virtual void update(float dt);
[*]};
[*]
[*]#endif


[*]#include "Mutou.h"
[*]
[*]bool Mutou::init(){
[*]    this->scheduleUpdate();
[*]    return true;
[*]}
[*]
[*]void Mutou::changeState( EnumState enState ) {
[*]    this->enCurState = enState;
[*]}
[*]
[*]bool Mutou::isTire() {
[*]    /* 每次问木头累不累,他都会说:累~ */
[*]    return true;
[*]}
[*]
[*]bool Mutou::isWantToWriteArticle() {
[*]    /* 有10%的概率想写教程(好懒~!) */
[*]    float ran = CCRANDOM_0_1();
[*]    if(ran < 0.1f) {
[*]      return true;
[*]    }
[*]
[*]    return false;
[*]}
[*]
[*]void Mutou::writeCode() {
[*]    CCLOG("mutou is wirting Code.");
[*]}
[*]
[*]void Mutou::writeArticle() {
[*]    CCLOG("mutou is writing article.");
[*]}
[*]
[*]
[*]void Mutou::rest() {
[*]    CCLOG("mutou is resting.");
[*]}
[*]
[*]void Mutou::update( float dt ) {
[*]    /* 判断在每一种状态下应该做什么事情 */
[*]    switch(enCurState) {
[*]    case enStateWriteCode:
[*]      /* 如果累了就休息,并且切换到休息状态 */
[*]      if(isTire()) {
[*]            rest();
[*]            changeState(enStateRest);
[*]      }
[*]      break;
[*]    case enStateWriteArticle:
[*]      /* 如果累了就休息,并且切换到休息状态 */
[*]      if(isTire()) {
[*]            rest();
[*]            changeState(enStateRest);
[*]      }
[*]      break;
[*]    case enStateRest:
[*]      /* 一定的概率写代码,一定的概率写教程,并且切换到相应的状态 */
[*]      if(isWantToWriteArticle()) {
[*]            writeArticle();
[*]            changeState(enStateWriteArticle);
[*]      }
[*]      else {
[*]            writeCode();
[*]            changeState(enStateWriteCode);
[*]      }
[*]      break;
[*]    }
[*]}


这是一个很简单的类,他有一些函数,用来做一些事情,他还有一个状态,表示他当前正在做什么事情。
接着,留意到Mutou类的update函数了吗? 我们在update函数里做一些事情(如果你不知道Cocos2d-x的update函数的相关知识和使用方式,请百度一下,有很多资料~)
其实,注释已经很详细了,判断木头当前的状态,在不同状态下又会做出一些行为,并且改变状态。
(旁白:我总感觉很简单的东西被你一写就不简单了= =)
5. 开始让木头活起来~!现在,我们来随便新建一个Cocos2d-x项目,然后把HelloWorldScene的init函数多余的东西删掉,加入我们需要的代码:

[*]bool HelloWorld::init()
[*]{
[*]    bool bRet = false;
[*]    do   
[*]    {
[*]      CC_BREAK_IF(! CCLayer::init());
[*]
[*]      /* 新建木头角色 */
[*]      mMutou = Mutou::create();
[*]
[*]      /* 初始化木头的状态为休息 */
[*]      mMutou->changeState(enStateRest);
[*]
[*]      this->addChild(mMutou);
[*]      bRet = true;
[*]    } while (0);
[*]
[*]    return bRet;
[*]}


很简单,我们给HelloWorld类加了一个成员变量mMutou,然后在init里新建了一个Mutou对象,并且把它的状态初始化为休息。

我们用调试模式运行程序,将看到以下日志的输出:
mutou is wirting Code.
mutou is resting.
mutou is wirting Code.
mutou is resting.
mutou is writing article.
mutou is resting.
mutou is wirting Code.
mutou is resting.
mutou is wirting Code.

这实在是太神奇了~!这就是状态机,如此简单,却又如此强大。
他可以完成很复杂的事情(包括人工智能~!)。


用我的理解,那就是一句话:对象在面对不同情况时,根据自身的状态做出不同的响应,并且对象的状态个数是有限的。


好了,强大的状态机(其实我介绍的确切的说应该叫做“有限状态机”)就是这么简单。关于状态机的教程到此结束,大家可以开始去实现那复杂无比的AI逻辑了,比如战斗系统中怪物的AI行为。

(旁白:等等~!总觉得哪里不对劲!你的标题不是写着第一章么?怎么就到此结束了?第二章呢?还有啊,这算什么代码啊?一大串逻辑塞在switch语句里!!)








fengyunyu 发表于 2014-9-2 11:18:50

状态机的应用很广

dongyanbo 发表于 2014-9-2 11:20:16

又见楼主,辛苦了,哈哈

浪里白条 发表于 2014-9-2 11:20:47

貌似原来傻孩子很喜欢用这个

yzb1019 发表于 2014-9-2 11:28:22

这个太好用了,很强大

cn_x 发表于 2014-9-2 11:28:58

dongyanbo 发表于 2014-9-2 11:20
又见楼主,辛苦了,哈哈

看那个蜘蛛模板,得先了解下状态机

cn_x 发表于 2014-9-2 11:29:36

浪里白条 发表于 2014-9-2 11:20
貌似原来傻孩子很喜欢用这个

是啊,貌似他一直整这个

Appcat 发表于 2014-9-2 11:30:03

浅显易懂!好文!

bbglx 发表于 2014-9-2 11:44:51

看完了,这个是状态机。。。和以前看到的键盘处理状态机不太一样。
C++好像逻辑很清晰啊,C语言有点混乱,我理解得对不?大神用C++编单片机程序吗?

zndz410 发表于 2014-9-2 11:48:55

楼主有的字颜色设置太难看了,把人看晕了。

pcbddd 发表于 2014-9-2 11:49:01

感觉有点点搞笑,代码真幽默

holts2 发表于 2014-9-2 11:51:53

这个苯木头有点搞笑,状态机还是喜欢看本傻孩子的

NEXEN1106 发表于 2014-9-2 11:55:55

状态机很强大啊

sunnyqd 发表于 2014-9-2 12:03:37

学习了,辛苦

laotui 发表于 2014-9-2 12:21:32

傻孩子 是用状态机的高手,看过他的帖子。

zhaojun_xf 发表于 2014-9-2 12:22:09

不错,谢谢分享。。。。。。。。。。。。。

68336016 发表于 2014-9-2 12:23:52

一个本来不是很复杂的概念被LZ位置的代码复杂化了{:lol:}

songjie 发表于 2014-9-2 12:27:30

ucos上面的 状态机吗?

ddz123abcdef 发表于 2014-9-2 12:30:28

这代码能直接放到单片机里运行不?

湛泸骏驰 发表于 2014-9-2 12:30:40

状态机是不是以事件为驱动,前后台或者时间片轮 是已一定的时间循环执行呢。

wxfje 发表于 2014-9-2 12:32:39

先看看了,不知楼主还有其他状态机的资料不

wxfje 发表于 2014-9-2 12:34:10

holts2 发表于 2014-9-2 11:51
这个苯木头有点搞笑,状态机还是喜欢看本傻孩子的

请问有傻孩子状态机的资料不,或者是论坛的帖子也行

霸气侧漏 发表于 2014-9-2 12:36:10

不错不错 很好的东西

机器人天空 发表于 2014-9-2 12:59:58

貌似很强大

holts2 发表于 2014-9-2 13:03:09

wxfje 发表于 2014-9-2 12:34
请问有傻孩子状态机的资料不,或者是论坛的帖子也行

本坛搜下,很多

lzscan 发表于 2014-9-2 13:03:29

好文章啊

cn_x 发表于 2014-9-2 13:06:09

wxfje 发表于 2014-9-2 12:34
请问有傻孩子状态机的资料不,或者是论坛的帖子也行

http://www.amobbs.com/forum.php?mod=viewthread&tid=4319119&page=1&authorid=261204
http://www.amobbs.com/forum.php?mod=viewthread&tid=5468744&highlight=%E5%82%BB%E5%AD%A9%E5%AD%90%E7%8A%B6%E6%80%81%E6%9C%BA
http://www.amobbs.com/forum.php?mod=viewthread&tid=5468708&page=1&authorid=261204
http://www.amobbs.com/thread-5557007-1-1.html

bluestone2012 发表于 2014-9-2 13:08:54

很好,很强大,谢谢

wangpengcheng 发表于 2014-9-2 13:09:57

支持一个

lzl000 发表于 2014-9-2 13:13:06

又见楼主分享

Excellence 发表于 2014-9-2 13:15:46

{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}

linread 发表于 2014-9-2 13:17:08

状态机应用很广泛,能使程序逻辑性更强,写代码必备

abszy 发表于 2014-9-2 14:15:57

傻孩子的教程写的不错 学习了

qinshiysb 发表于 2014-9-2 14:24:51

嗯嗯,大概看了一遍

venilunar 发表于 2014-9-2 14:25:02

感觉很难,一直没有学会

cn_x 发表于 2014-9-2 14:26:10

venilunar 发表于 2014-9-2 14:25
感觉很难,一直没有学会

刚开始看这个,还没啥头绪

weiwei4 发表于 2014-9-2 15:22:56

不错,支持一个

leicai05 发表于 2014-9-2 15:28:20

是的,状态机很强大,很复杂的逻辑都是用状态机来写的,坏处是别人不容易看明白。跳来跳去,看的人就晕了。。。

cn_x 发表于 2014-9-2 15:29:40

leicai05 发表于 2014-9-2 15:28
是的,状态机很强大,很复杂的逻辑都是用状态机来写的,坏处是别人不容易看明白。跳来跳去,看的人就晕了。 ...

看来你是用过状态机或者接触过状态机的啊

leicai05 发表于 2014-9-2 15:35:05

cn_x 发表于 2014-9-2 15:29
看来你是用过状态机或者接触过状态机的啊

想我这种半路子的程序猿,在嵌入式中的状态机,就是简单的
switch()
{
case :
   break;
case :
   break;
..
..
..
}
这个万能公式,我自己认为很强大,也在实践中很多应用,屡试不爽!
每当有比较复杂的逻辑,绕的时候,我就用他了。基本都能解决问题。

leicai05 发表于 2014-9-2 15:37:24

像傻孩子的那种风格,写大程序写多了,各种封装,各种宏。。。。简单的例子就可以把我看晕。。。
我只能用用简答的谢谢小程序。

MINI2440 发表于 2014-9-2 15:49:27

浅显易懂的好文章。。。

BrightWang 发表于 2014-9-2 15:54:44

还是用QP状态机框架吧,各位。

wanstrive 发表于 2014-9-2 16:52:09

我理解的状态机就是设一个变量,然后用switch case根据变量不同的值来执行不同的代码段实现不同的功能。

lyl2022 发表于 2014-9-2 17:01:53

状态机,量子编程?有啥区别?感觉概念搞不清了,标记学习

zhudadragon 发表于 2014-9-2 17:44:01

涨姿势了

mypear 发表于 2014-9-2 17:51:44

收藏后,慢慢看

bruce_helen 发表于 2014-9-2 18:59:32

好文章,收藏

zuokong2006 发表于 2014-9-2 19:28:12

学习{:smile:}

JESTER9 发表于 2014-9-2 19:37:51

受教了{:biggrin:}

maimaige 发表于 2014-9-2 19:59:22

Cocos2d-x 是写游戏的语言啊

浪里白条 发表于 2014-9-2 20:04:53

BrightWang 发表于 2014-9-2 15:54
还是用QP状态机框架吧,各位。

什么是QP状态机框架?

浪里白条 发表于 2014-9-2 20:05:35

wanstrive 发表于 2014-9-2 16:52
我理解的状态机就是设一个变量,然后用switch case根据变量不同的值来执行不同的代码段实现不同的功能。 ...

再加一条,在每个CASE里 变量的值都有可能发生转变。

wanstrive 发表于 2014-9-2 20:20:14

浪里白条 发表于 2014-9-2 20:05
再加一条,在每个CASE里 变量的值都有可能发生转变。

哈哈哈,前辈赐教了。。。。

浪里白条 发表于 2014-9-2 20:22:38

wanstrive 发表于 2014-9-2 20:20
哈哈哈,前辈赐教了。。。。

赐教不敢当,相互讨论。

BrightWang 发表于 2014-9-2 20:25:10

本帖最后由 BrightWang 于 2014-9-2 20:28 编辑

浪里白条 发表于 2014-9-2 20:04
什么是QP状态机框架?

如果想用状态机,自己实现的状态机弱爆了。
QP是一个老外实现的,简单的说,就是多个状态机轮询或按优先级调度,框架提供事件驱动服务。
http://www.state-machine.com

浪里白条 发表于 2014-9-2 20:26:37

BrightWang 发表于 2014-9-2 20:25
如果想用状态机,自己实现的状态机弱爆了。

????不是很明白呢,状态机做FPGA用的多,不都是自己编码实现吗
您的意思是C语言下实现的状态机有工具可以帮忙实现代码?

BrightWang 发表于 2014-9-2 20:29:13

浪里白条 发表于 2014-9-2 20:26
????不是很明白呢,状态机做FPGA用的多,不都是自己编码实现吗
您的意思是C语言下实现的状态机有工具 ...

是的,QP就是这样的工具,对于嵌入式控制与人机交互来说,最好不过。

y1z2f4 发表于 2014-9-2 20:31:35

受教了,谢谢分享,,,,,

wazhiyi 发表于 2014-9-2 20:33:57

C++的代码啊

浪里白条 发表于 2014-9-2 20:34:53

BrightWang 发表于 2014-9-2 20:29
是的,QP就是这样的工具,对于嵌入式控制与人机交互来说,最好不过。

哈!搜到个这个帖子
http://www.amobbs.com/thread-5523845-1-1.html
貌似蛮强大。

BrightWang 发表于 2014-9-2 20:39:21

浪里白条 发表于 2014-9-2 20:34
哈!搜到个这个帖子
http://www.amobbs.com/thread-5523845-1-1.html
貌似蛮强大。

可以试一试,比起自己实现的状态机来,不可同日而语。
这个就好比自己实现的调度内核与成熟的RTOS的关系一样。

浪里白条 发表于 2014-9-2 20:43:17

BrightWang 发表于 2014-9-2 20:39
可以试一试,比起自己实现的状态机来,不可同日而语。
这个就好比自己实现的调度内核与成熟的RTOS的关系 ...

感谢您的回复,这个网站打不开
http://cn.state-machine.com/
请教一下
这玩意能否实现诸如Linux+QT那种图形界面?
亦或是能实现UCOS+GUI这种轻量级的图形界面?

soos 发表于 2014-9-2 20:45:20

这个看看了

步之道 发表于 2014-9-2 20:54:43

我对状态机的想法是,用一个数组来当做状态标志。数组中的每一个字节表示一个相互独立的动作,当要进入一个状态时,先去改变这个状态对应的标志,然后主循环会去查询标志,不同标志处于不同的状态。
要是不对,请坛友们指正。

cn_x 发表于 2014-9-2 21:12:47

步之道 发表于 2014-9-2 20:54
我对状态机的想法是,用一个数组来当做状态标志。数组中的每一个字节表示一个相互独立的动作,当要进入一个 ...

一般用结构体成员来表示吧
不过数组貌似也可以

浪里白条 发表于 2014-9-2 21:19:47

cn_x 发表于 2014-9-2 21:12
一般用结构体成员来表示吧
不过数组貌似也可以

用什么来表示状态无所谓 变量 bit 字符串 都可以
只是状态的数量不一样而已

浪里白条 发表于 2014-9-2 21:21:12

步之道 发表于 2014-9-2 20:54
我对状态机的想法是,用一个数组来当做状态标志。数组中的每一个字节表示一个相互独立的动作,当要进入一个 ...

您这个叫做根据标志位执行程序,和状态机貌似有点区别。也有可能是我没弄懂您的意思。

步之道 发表于 2014-9-2 21:30:59

浪里白条 发表于 2014-9-2 21:21
您这个叫做根据标志位执行程序,和状态机貌似有点区别。也有可能是我没弄懂您的意思。 ...

数组中的一个字节表示一个独立应用场景,然后这个字节里的几个bit分别表示不同的状态,比如安防中有几种模式,那么如果我要从一种状态变为另一种状态时,我操作界面,那么底层是先将对应的这个字节改成我要的这个状态规定好的值,然后我就可以在主循环中根据改的这个字节的值切换到那个状态中去。

浪里白条 发表于 2014-9-2 21:32:39

哈!懂了。
您这个分bit的方法和FPGA写状态机一样呢。

cn_x 发表于 2014-9-2 21:36:14

步之道 发表于 2014-9-2 21:30
数组中的一个字节表示一个独立应用场景,然后这个字节里的几个bit分别表示不同的状态,比如安防中有几种 ...

这样子干很好玩
以后试试
不过感觉用结构体更直观

cn_x 发表于 2014-9-2 21:37:50

浪里白条 发表于 2014-9-2 21:32
哈!懂了。
您这个分bit的方法和FPGA写状态机一样呢。

确实,有点类似硬件端口触发
每触发一个端口运行一个对用的功能

步之道 发表于 2014-9-2 21:44:48

浪里白条 发表于 2014-9-2 21:32
哈!懂了。
您这个分bit的方法和FPGA写状态机一样呢。

好吧,我也不知道这种方法好不好用,因为最近做安防的产品,然后安防里有那种元素很多的情况,就想用这样的方法实现,因为要是用其他方法,怕自己最后都被跳乱了。如果按照这个方法,操作时改成什么样的值,我就去怎么执行状态,不想去怎么从一个状态怎么切换到另一个状态之间差别是什么,然后怎么调整。
最近也确实在看FPGA的书,可能我自己都分不清这个是属于单片机还是FPGA。

zqy517 发表于 2014-9-2 21:49:20


状态机应用很广泛,能使程序逻辑性更强,写代码必备

cn_x 发表于 2014-9-2 21:51:10

步之道 发表于 2014-9-2 21:44
好吧,我也不知道这种方法好不好用,因为最近做安防的产品,然后安防里有那种元素很多的情况,就想用这样 ...

殊途同归啊,好用就行

步之道 发表于 2014-9-2 21:51:24

cn_x 发表于 2014-9-2 21:36
这样子干很好玩
以后试试
不过感觉用结构体更直观

怎么说呢,数组只是举了一个例子,一个字节也可以,只是状态少一点。结构体能表示更多了,还呢过通过定义不同名称的变量来区分,确实比数组更好用。跟结构体比的话,数组确实有点low了。

cn_x 发表于 2014-9-2 21:52:40

zqy517 发表于 2014-9-2 21:49
状态机应用很广泛,能使程序逻辑性更强,写代码必备

其实很久以前在建立串口通讯协议的时候就用上了这个理念
只是当时不知道这个就叫状态机而已

taojie 发表于 2014-9-2 21:54:33

状态机,记得多数时候,老师教的CPLD,就是要求用状态机的呢,否则期末考试不给及格啊

cn_x 发表于 2014-9-2 22:02:31

taojie 发表于 2014-9-2 21:54
状态机,记得多数时候,老师教的CPLD,就是要求用状态机的呢,否则期末考试不给及格啊 ...

这个老师严格要求啊,不错的老师

cn_x 发表于 2014-9-2 22:04:22

步之道 发表于 2014-9-2 21:51
怎么说呢,数组只是举了一个例子,一个字节也可以,只是状态少一点。结构体能表示更多了,还呢过通过定义 ...

可能以前单片机资源有限吧,现在资源丰富可以挥霍资源了

浪里白条 发表于 2014-9-2 22:06:41

taojie 发表于 2014-9-2 21:54
状态机,记得多数时候,老师教的CPLD,就是要求用状态机的呢,否则期末考试不给及格啊 ...

嗨,CPLD那几个组合逻辑还需要用状态机?

taojie 发表于 2014-9-2 22:09:33

cn_x 发表于 2014-9-2 22:04
可能以前单片机资源有限吧,现在资源丰富可以挥霍资源了

就是04年那时候上的课程

taojie 发表于 2014-9-2 22:10:43

浪里白条 发表于 2014-9-2 22:06
嗨,CPLD那几个组合逻辑还需要用状态机?

对啊,就是机械手和电梯这些实验的

cn_x 发表于 2014-9-2 22:16:13

taojie 发表于 2014-9-2 22:10
对啊,就是机械手和电梯这些实验的

这些确实用状态机蛮好,动作蛮多

Free_Bird 发表于 2014-9-2 22:24:41

QP零星的学了近1个月,还是只会点灯。。。。感觉还是没入门

qwert1213131 发表于 2014-9-2 22:31:27

表示对此还没深刻认识啊

wangpengcheng 发表于 2014-9-2 22:33:24

qwert1213131 发表于 2014-9-2 22:31
表示对此还没深刻认识啊

那你可得好好看看,呵呵!这可是个好东西!两个字,好用

cn_x 发表于 2014-9-2 22:34:44

Free_Bird 发表于 2014-9-2 22:24
QP零星的学了近1个月,还是只会点灯。。。。感觉还是没入门

认真学习吧,很有用的东西

lisingch 发表于 2014-9-2 23:23:59

楼主辛苦,收藏了。

megadiy 发表于 2014-9-3 00:17:14

写的很清楚,受教了

taojie 发表于 2014-9-3 07:12:58

cn_x 发表于 2014-9-2 22:16
这些确实用状态机蛮好,动作蛮多

呵呵,这些实验你在学校的时候应该也做过吧

cn_x 发表于 2014-9-3 07:28:18

taojie 发表于 2014-9-3 07:12
呵呵,这些实验你在学校的时候应该也做过吧

我那个时候貌似FPGA还没怎么见过
开了一门叫EDA技术的课 ,将的其实就是FPGA,不是主课,附带学习而已
话说老师讲的单片机是8051,8031
那些个汇编一通讲下来完全不知所云··················

gnocy 发表于 2014-9-3 08:09:13

这个貌似C++语言,刚刚看了一点C++还不是很懂,看了一下不是很理解

qwert1213131 发表于 2014-9-3 12:36:06

一点要好好看看这个

wbxjtu 发表于 2014-9-3 13:42:01

嗯,不错的

JESTER9 发表于 2014-9-3 17:03:08

写的不错,受教了{:lol:}{:lol:}

rockyyangyang 发表于 2014-9-3 21:04:33

很不错的一个东西 但是用C++自己还无涉猎         

rockyyangyang 发表于 2014-9-3 21:04:57

很不错的一个东西 但是用C++自己还无涉猎         

xiay123 发表于 2015-2-5 12:45:54

mark,{:lol:}

Juggernaut 发表于 2015-2-5 21:32:17

有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型
页: [1] 2
查看完整版本: 转一篇关于状态机的文章,让大家简单认识状态机