首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

【讨论】有限状态机的代码一般怎么设计

2012-02-24 
【讨论】有限状态机的代码一般如何设计?C/C++ code// 维护输入状态和输出状态的类class FSMstate{public://

【讨论】有限状态机的代码一般如何设计?

C/C++ code
// 维护输入状态和输出状态的类class FSMstate{public:    // 构造函数    FSMstate(int iStateID,unsigned usTransitions);    ~FSMstate();    // 获取当前状态的ID    int GetID() { return m_iStateID; }    // 向数组中增加状态转换    void AddTransition(int iInput,int iOutputID);    // 从数组中删除一个状态转换    void DeleteTransition(int iOutputID);    // 进行状态转换并得到输出状态    int GetOutput(int iInput);private:    unsigned m_usNumberOfTransition; // 状态的最大数    int* m_piInputs;                 // 维护输入状态数组    int* m_piOutputState;            // 维护输出状态数组    int m_iStateID;                  // 当前状态};


比如:
输入状态: 输出状态:

鼠标未停靠 渲染按钮正常的纹理
鼠标停靠 渲染按钮被停靠的纹理
左键按下 渲染按钮被压下的纹理
左键弹起 渲染按钮正常的纹理


角色未进势力范围 怪物若无其事
角色攻击 怪物反击并掉血
怪物攻击 角色掉血
角色使用加血技能 角色生命增加
怪物生命为0 怪物死亡


这是我对FSM的一点点认识,不知道描述的对不对。

状态机这东西说来简单,就是当前状态,输入状态和输出状态。
但是问题是代码应如何设计。如何应用。
拿出来讨论讨论,请教请教各位熟悉的朋友。。

[解决办法]
探讨
引用:
补充一下状态的迁移。

在某状态下,受到某个事件刺激,做出一系列的动作作为反应,然后迁移入下一个状态。


可以写一段那个23个设计模式中的State模式的例子么?

热点排行