人气 146

[游戏程序] 分享:大家有没有状态机的简单+实用的封装? [复制链接]

九艺网 2017-3-10 17:01:10

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
[table][tr][td](转帖)最近写的游戏老是有switch + call function.
于是使用表格把它们包起来,但是写得多了,还是做了个简单的封装:

class CTestState
{
public:
friend class CStateMachine;
enum MYSTATE
{
EM_S1 = 0,
EM_S2 = 1
};
CTestState () { m_state.SetCaller(this); }//: m_state(this) {}
CStateMachine m_state;        //状态机对象

void Run();
void OnEvent();
private:
void MainState ( const EM_MACHINE_STATE &state ) {}
void MainState2( const EM_MACHINE_STATE &state );
};
CStateMachine::MYDATA CStateMachine::s_info[] = {
{CTestState::EM_S1, &CTestState::MainState, false},
{CTestState::EM_S2, &CTestState::MainState2,true}
};
<p>void CTestState::MainState2 (const EM_MACHINE_STATE &state )
{
switch (state)
{
case EM_MS_INIT:
cout
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-4-27 06:36 , Processed in 0.107652 second(s), 23 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.