有限状态机的编写(游戏AI学习)
来源:互联网 发布:为什么会遭到网络诈骗 编辑:程序博客网 时间:2024/05/22 06:34
FSM有限状态机的编写
(1)相比if--else--then 状态逻辑它的优点:
编写快速简单,易于调试,很少的计算开销,直觉性,灵活性
(2)视频游戏中常常把状态封装成对象,包含推动状态转变所需要的逻辑
状态接口:
State类
class State
{
public:
virtual void Execute(Troll* troll);
};
Troll 巨魔类
为巨魔类赋予有限状态机的功能性,只需增添一个指向State类继承对象的实例指针(State* m_pCurrentState)和允许用户改变指针的指向实例的方法(ChangeState())
(3)一个简单的实例
- 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();
- }
- }
- };
(4) Troll类更新时,他会反过来用this指针调用当前状态类型的Execute方法。Troll类当更新时又怎样的行为可以完全依赖与他的当前状态的逻辑
- 有限状态机的编写(游戏AI学习)
- 游戏AI之有限状态机(1)
- 实现简易而强大的游戏AI——FSM,有限状态机
- 实现简易而强大的游戏AI——FSM,有限状态机
- Unity 内的敌人AI 或者 有限状态机FSM实现AI
- 关于FSM(有限状态机)的学习2
- unity AI之有限状态机
- 基于Verilog的有限状态机的编写
- 编写供有限状态机使用的Java框架
- 游戏编程入门学习笔记25——AI篇——AI策略的制定(策划)
- cocos2d-x游戏开发系列教程-坦克大战游戏之敌方坦克AI的编写
- 游戏人工智能之有限状态机初探(一)
- 游戏开发中的人工智能(九):有限状态机
- 有限状态机(FSM)学习总结
- 有限状态机(FSM)学习总结
- 游戏AI技术学习记录
- 关于FSM(有限状态机)的学习(1)
- 算法学习笔记(九)有限状态机 FSM 的应用
- 读取txt文档并分页
- 自己游戏之旅————感言
- april 4,2011
- 北京公车多啊
- 考考你一个WPF布局
- 有限状态机的编写(游戏AI学习)
- 改一下注册表
- 三层架构
- 在VC中自定义一个消息,并利用该消息弹出一个对话框
- sql常用的语句
- javaweb 开发
- 简单处理数据库数据一致性
- final修饰引用与修饰变量的区别
- 遗传算法解决网络布线问题 tsp