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

福州移动网站建设外贸推广平台哪家好

福州移动网站建设,外贸推广平台哪家好,网站建站多钱,android软件开发一、介绍 有限状态机是一个用来进行对象状态管理的计算模型。它由一组状态、一个或者多个触发事件以及状态之间的转换条件所组成。 对于任意一个游戏对象,我们可以为其编写一个或者多个状态机,使其能够在不同状态下有不同的决策和运作机制。 核心思想…

一、介绍

有限状态机是一个用来进行对象状态管理的计算模型。它由一组状态、一个或者多个触发事件以及状态之间的转换条件所组成。

对于任意一个游戏对象,我们可以为其编写一个或者多个状态机,使其能够在不同状态下有不同的决策和运作机制。

核心思想主要是:

  1. 拥有多种状态
  2. 仅处于多种状态的其中之一
  3. 状态之间能够互相切换

 

二、有限状态机的基本制作步骤

  1. 创建一个类作为状态的基类(一般是抽象类)
  2. 在状态基类中编写方法(建议是抽象方法,比如OnEnter、OnMove、OnExit等,你也可以根据开发需求来自行定义 )
  3. 创建状态的子类(也就是要继承状态的基类),这时候你就需要实现对应的抽象方法。在这里,你可以创建多个子类(比如敌人高于50%的血量的时候的状态,敌人低于50%的血量的时候的状态......)
  4. 创建状态子类的实例(一个或者多个),并定义一个状态基类对象(不需要实例化)
  5. 根据状态的不同,状态基类对象引用不同的状态子类的实例(可以通过一个枚举enum来给状态类型做一个分类,然后通过一个字典Dictionary将枚举成员和状态子类实例一对一地存储起来,当需要的时候,就可以直接通过字典将其赋予给状态基类对象
  6. 通过状态基类对象来调用自身的方法,从而实现有限状态机。

三、代码示例

下面这段代码演示了一个基本的有限状态机写法。

using System;
namespace ConsoleApp1
{internal class Program{static void Main(string[] args){//定义基类对象MyAction myAction;//定义并实例化子类对象AngryAction angryAction = new AngryAction();NormalAction normalAction = new NormalAction();//引用 angryAction 对象myAction = normalAction;myAction.Speak();myAction.Run();//引用 normalAction 对象myAction = angryAction;myAction.Speak();myAction.Run();Console.ReadKey();}}//行为基类public abstract class MyAction{public abstract void Speak();public abstract void Run();}//子类:生气时候的行为public class AngryAction : MyAction{public override void Run(){Console.WriteLine("很生气地跑");}public override void Speak(){Console.WriteLine("很生气地说话");}}//子类:平常时候的行为public class NormalAction : MyAction{public override void Run(){Console.WriteLine("很平常地跑");}public override void Speak(){Console.WriteLine("很平常地说话");}}}

四、个人的一些理解

我个人理解的有限状态机的思想,就是“调用的是同一个方法,最终执行效果却有所不同”。在上述的代码当中,我只是给基类对象切换了对子类对象的引用,但是调用“相同”的方法,结果不一样。这就方便我们在游戏开发当中对某个游戏对象的状态管理和控制。


文章转载自:

http://7vmSxosJ.crtgd.cn
http://8Kemy0kM.crtgd.cn
http://bRZSdnqv.crtgd.cn
http://nQrtYOHH.crtgd.cn
http://TwUbhoYV.crtgd.cn
http://iWRhp0aN.crtgd.cn
http://EnXtiLG9.crtgd.cn
http://tSCQgxsc.crtgd.cn
http://kxVKf6dX.crtgd.cn
http://8zT9C18Q.crtgd.cn
http://S1GHWJwx.crtgd.cn
http://zxQrBEWs.crtgd.cn
http://zHAsoKGz.crtgd.cn
http://CwlHjufO.crtgd.cn
http://OlYAZJ7p.crtgd.cn
http://7uhxaUzF.crtgd.cn
http://SYIPUGF2.crtgd.cn
http://gNUInaV3.crtgd.cn
http://fvMf1lu0.crtgd.cn
http://bttnfxO1.crtgd.cn
http://IhmVyyn5.crtgd.cn
http://VxMM7KXr.crtgd.cn
http://r0VXEmxm.crtgd.cn
http://QZp5QuJ8.crtgd.cn
http://VQQlglAs.crtgd.cn
http://5SWrCM56.crtgd.cn
http://8ZpD9xop.crtgd.cn
http://hiiDnGrJ.crtgd.cn
http://TALkqTRH.crtgd.cn
http://XYlQuMc1.crtgd.cn
http://www.dtcms.com/wzjs/723341.html

相关文章:

  • 天津建设教育培训中心网站网站建设都需要什么资料
  • 南京网站制作公司电话开源课程 视频网站模板
  • 织梦网站怎么上传制作一个网站官网
  • 安阳网站公司哪家好古风网站建设
  • 临沂网站建设吧asp.net网站开发视频
  • vs网站开发源码dynamik wordpress
  • 建网站什么网站好珠海室内设计学校
  • 企业文化有哪些谷歌网站优化工具
  • 建网站网房地产公司排行榜
  • 网站不支持m.域名WordPress说说主题
  • 网站建设 300元做流量网站
  • 运用asp做购物网站的心得深圳沙井网站建设
  • 南昌网站设计企业网络推广营销策划方案
  • 做搜狗pc网站优化快速网站基础风格创建
  • 财务部官方网站经济建设司寻找客户的12种方法
  • 辽宁做网站怎样用西瓜影音做网站
  • 专业广州网站设计技术培训机构排名前十
  • 网站开发包括网站的 等过程东莞网站优化排名网站
  • eclipse模仿网站开发源代码圣都装饰全包价格清单
  • 二手车网站软件建设网站建设 年终总结
  • 网站建设制作、微信公众号建网站公司是如何赚钱
  • 网站建设简单点的国外一直小猫做图标的网站
  • 网站开发团队需要哪些人自动化优化系统网站建设
  • 在线网站流量查询python 做网站开发
  • 如何选择网站开发语言有没有只做软装方案收设计费的网站
  • 黔西南州建设银行网站网站服务器出错是什么意思
  • 如何优化自己的网站客源汇软件怎么样
  • 自媒体平台注册官网广州seo网站推广平台
  • 成都哪些公司可以做网站代做网站微信号
  • 怎么做倒计时网站江苏宿迁房产网