⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsm.h

📁 MARS加密解密
💻 H
字号:
// FSM.h: interface for the CFSM class.
//
//	本程序是《疯狂的火星虫—面向对象状态机实践指南》的演示程序
//
//	版权所有 (C) 2004 王咏武
//	http://www.contextfree.net/wangyw/
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_)
#define AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <vector>
#include "State.h"

using namespace std;

class CFSM
{
public:
    CFSM() {}
    virtual ~CFSM();

    void Serialize(CArchive& ar)
    {
        if (ar.IsStoring())
        {
            // TODO: add storing code here
            CString str(GetActiveLeaf());
            ar << str;
        }
        else
        {
            // TODO: add loading code here
            CString str;
            ar >> str;
            // 序列化后迁移状态
            TransitTo(str);
        }
    }
    
    void ActiveDefaultState();

    void Active(CState * pRoot);

    void TransitTo(const char * lpName);

    void SendEvent(WORD wEvent, WORD wParam, DWORD lParam);

    const char * GetActiveLeaf();

    CState * GetState(const char * lpName);

protected:
    vector<CState *>    m_States;       // 所有的状态
};

#endif // !defined(AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -