当前位置: 首页 > news >正文

沧州网站制作教程网站底部图片

沧州网站制作教程,网站底部图片,网站域名收费,中国肩章大全图解//待完善 有限状态机是一个很常用的技术#xff0c;在流程控制和游戏AI中都比较实用#xff0c;因为状态机编程简单又很符合直觉。与有限状态机类似的是设计模式中的状态模式。本文是参考《Programming Game AI by Example》 一、 记得最开始工作时候也接触过有限状态机…//待完善 有限状态机是一个很常用的技术在流程控制和游戏AI中都比较实用因为状态机编程简单又很符合直觉。与有限状态机类似的是设计模式中的状态模式。本文是参考《Programming Game AI by Example》 一、 记得最开始工作时候也接触过有限状态机当时是一个长长的用switch写成的状态机理解它的时候真的很困难。 所以现在使用一套内置规则到状态内部去来控制状态的转换。 现在就来制作一个有限状态机。 作为一个关于使用状态机创建一个智能体的实际案例我们先模拟这样一个场景。是作为一个简单的基于文本的控制台应用实现的所以你将不得不想象遍地的风滚草叽叽嘎嘎的矿井支柱时有荒漠的灰尘吹进你的眼睛。任何状态的改变或者状态动作的输出将作为文本传送到控制台窗口。我使用这种只有普通的文本的方法是因为它能将有限状态机的机制演示清楚而不会由于更复杂的环境而增加编码混乱。 而这些位置每一个都代表了一个状态因为我们是使用内置规则来控制状态机的转换“我”在到达一个位置之后要干什么都会由当前所处的状态和一些属性值来决定。 BaseGameEntity类用来作为所有游戏对象的基类主要为游戏对象提供了一个ID以及每一帧更新时调用的纯虚函数Update。 class BaseGameEntity { private:int m_ID; // 每个实体具有一个唯一的识别数字static int m_iNextValidID; //这是下一个有效的ID。每次BaseGameEntity被实例化这个值就被更新void SetID(int val);//在构造函数中调用这个来确认ID被正确设置。在设置ID和增量前它校验传递给方法的值是//大于还是等于下一个有效的ID。public:BaseGameEntity(int id) { SetID(id); }virtual ~BaseGameEntity() {}virtual void Update() 0;//所有的实体必须执行一个更新函数int ID() const { return m_ID; } };使用一个枚举类型管理所有可能到达的地点sweetHome、school、company、beerLady 分别代表家、学校、实习公司、啤酒阿姨这四个地点。在 Me 类中对“我”所特有的属性进行了定义如心情值 m_iMoodForDoingStuffs 金钱数 m_iMoneyInCard 能力 m_iAbilityLevel 疲劳 m_iFatigue 以及这些属性的阈值用来在状态转移中起作用。随后定义的方法表明了这些属性如何变化并为其他类查看这些属性暴露了接口。 enum location_type {sweetHome,school,company,beerLady, };class Miner : public BaseGameEntity { private:State* m_pCurrentState;location_type m_Location;//指向一个状态实例的指针State* m_pCurrentState;//矿工当前所处的位置location_type m_Location;//矿工的包中装了多少天然金块int m_iGoldcarried;//矿工在银行存了多少钱int m_iMoneyInBank;//价值越高,矿工越口渴int m_iThirst;//价值越高,矿工越累int m_iFatigue;public:Miner(int ID); void Update(); void ChangeState(State *pNewState);location_type Location()const { return m_Location; }void ChangeLocation(const location_type goal) { m_Location goal; }int Ability()const { return m_iAbilityLevel; }void SetAbilityLevel(const int val) { m_iAbilityLevel val; }void AddToAbility(const int val);int MoneyInCard()const { return m_iMoneyInCard; }void SetMoneyInCard(const int val) { m_iMoneyInCard val; }void ThePayDay(const int val);bool Fatigued()const;bool Rested()const;void DecreaseFatigue(const int val) { m_iFatigue - val; }void IncreaseFatigue(const int val) { m_iFatigue val; }bool LowMood()const;void DecreaseMood(const int val) { m_iMoodForDoingStuffs - val; }void IncreaseMood(const int val) { m_iMoodForDoingStuffs val; }bool FeelPoor()const;void BuyTheBeer() { m_iMoodForDoingStuffs Max_Mood; m_iMoneyInCard - 500; } };接下来是状态 State 类这是一个纯虚类抽象类作为状态对象的一个通用接口。 class State { public:virtual ~State(){}virtual void Enter(Miner*) 0;//当状态被进入时执行这个virtual void Execute(Miner*) 0;//每一更新步骤调用virtual void Exit(Miner*) 0;//退出是执行这个}; 在这里使用单例模式实现每一个状态一切从简不考虑线程安全。分别针对不同的地点定义在每个地点的状态类代码如下 class GoWorkAndEarnMoney:public State { private:GoWorkAndEarnMoney() default; public:static GoWorkAndEarnMoney* Instance();virtual void Enter(Me* pMe);virtual void Execute(Me* pMe);virtual void Exit(Me* pMe); };class GoSchoolAndStudy:public State { private:GoSchoolAndStudy() default; public:static GoSchoolAndStudy* Instance();virtual void Enter(Me* pMe);virtual void Execute(Me* pMe);virtual void Exit(Me* pMe); };class GoHomeAndSleep:public State { private:GoHomeAndSleep() default; public:static GoHomeAndSleep* Instance();virtual void Enter(Me* pMe);virtual void Execute(Me* pMe);virtual void Exit(Me* pMe); };class GoBar:public State { private:GoBar() default; public:static GoBar* Instance();virtual void Enter(Me* pMe);virtual void Execute(Me* pMe);virtual void Exit(Me* pMe); };
http://www.zqtcl.cn/news/836176/

相关文章:

  • 自己做网站nas如何做网站大图片
  • 网站优化定做嘉兴模板建站代理
  • 南宁做网站比较好的公司有哪些花乡科技园区网站建设
  • 网站注册平台怎么注册申请空间 建立网站吗
  • 汕头住房与城乡建设网站做网站视频 上传到哪儿
  • 东莞网站关键词优化福建个人网站备案
  • 国外获奖flash网站泉州网站制作专业
  • 万网域名注册后如何做网站教学上海app开发和制作公司
  • 恩施网站建设公司个人网站怎么制作成图片
  • 泸州高端网站建设公司上海企业网站
  • wordpress 建站 知乎济南全包圆装修400电话
  • 织梦建设两个网站 视频影视公司宣传片
  • 北京小企业网站建设那个做网站好
  • 怎样用模块做网站深圳网站建设制作厂家
  • 网站项目中的工作流程网站建设社区
  • 建设厅网站查询电工证件提供网站建设公司哪家好
  • 免费网站软件下载安装称多网站建设
  • 网站客户续费深圳福田地图
  • 连云港做电商网站的公司营销公司网站模板
  • 沈阳企业网站优化排名方案富阳做网站公司
  • 企业网站优化报价自己做个网站怎么赚钱
  • 做ui的网站有哪些网站建设订单模板
  • 重庆企业网站优化wordpress 接收询盘
  • 小米4路由器可以做网站嘛杭州淘宝代运营公司十大排名
  • 枞阳做网站的百度搜索入口
  • 网站建设提议徐州网站建设方案咨询
  • 昆明高端网站建设专门做游轮的网站
  • 教育培训网站抄袭网站是广西住房和城乡建设厅
  • 广州做网站建设的公司哪家好网站建设运营公司
  • 网站集约化建设 技术国内永久在线免费建站