游戏AI简单实现
2011-10-27 10:57
423 查看
现在游戏中,大多都使用有限状态机。也是设计模式之一。就是通过一个状态基类,根据基类指针执行不同状态。
下面给出简单的代码,大体上就这样。
Code:
class State
{
public:
virtual void Execute(Troll* troll);
};
class Troll// 巨魔类
{
State* m_pCurrentState;
public :
void Update()
{
m_pCurrentState->Execute(this);
}
void ChangeState(const State* pNewState)
{
delete m_pCurrentState;
m_pCurrentState = pNewState;
}
};
class State_RunAway:public State//逃跑(当前状态的逻辑为逃跑)
{
public :
void Execute(Troll* troll)
{
if(troll->isSafe())
{
troll->ChangeState(new State_Sleep);
}
else
{
troll->MoveAwayFromEnemy();
}
}
};
class State_Sleep: public State//睡觉(当前状态的逻辑为睡觉)
{
public :
void Execute(Troll* troll)
{
if(troll->isThreatened())
{
troll->ChangeState(new State_RunAway);
}
else
{
troll->Snore();
}
}
};
心得:现在感觉设计真的很重要。用好C++和系统方面,其它都是概念性的东西了。
下面给出简单的代码,大体上就这样。
Code:
class State
{
public:
virtual void Execute(Troll* troll);
};
class Troll// 巨魔类
{
State* m_pCurrentState;
public :
void Update()
{
m_pCurrentState->Execute(this);
}
void ChangeState(const State* pNewState)
{
delete m_pCurrentState;
m_pCurrentState = pNewState;
}
};
class State_RunAway:public State//逃跑(当前状态的逻辑为逃跑)
{
public :
void Execute(Troll* troll)
{
if(troll->isSafe())
{
troll->ChangeState(new State_Sleep);
}
else
{
troll->MoveAwayFromEnemy();
}
}
};
class State_Sleep: public State//睡觉(当前状态的逻辑为睡觉)
{
public :
void Execute(Troll* troll)
{
if(troll->isThreatened())
{
troll->ChangeState(new State_RunAway);
}
else
{
troll->Snore();
}
}
};
心得:现在感觉设计真的很重要。用好C++和系统方面,其它都是概念性的东西了。
相关文章推荐
- 【C++游戏】2048的实现和简单AI
- [置顶] 37行代码实现一个简单的打游戏AI
- Cocos3.4 横版游戏制作-《KillBear》-添加敌人+简单AI实现
- PHP实现的某SNS手机游戏的简单外挂
- 网络游戏客户端通信模块简单实现
- js,html实现简单的h5小游戏点亮所有的灯小游戏源码
- ARPG游戏中怪物AI实现
- J2ME游戏开发中时钟的简单实现
- python实现的简单猜数字游戏
- 使用状态机实现简单的AI
- 简单实现C语言2048游戏
- 游戏编程入门学习笔记26——AI篇——AI的实现
- Python实现的简单算术游戏实例
- cocos2d-x入门(2)-实现一个简单的游戏SimpleGame
- Unity3DAI行为------避开障碍物简单实现
- C编程之旅:猜数字游戏的简单实现
- 使用行为树(Behavior Tree)实现游戏AI
- 简单扫雷游戏的实现
- Android:简单实现美女扒衣服小游戏
- 使用行为树(Behavior Tree)实现游戏AI