游戏人工智能--FSM篇

游戏人工智能编程案例,搞到这本书后,就大致看了一下,总算买了本实际点的书了,比起我的上一本来讲,要实际多了。自己利用空闲时间看了第一章(略过),第二章。也就是有限状态机(FSM)。看到本章的总结后,知道有限状态机在设计上还要研究,看来只是入门,不过对我这个刚接触的人而言,也很不错了。

   大致谈一下自己的感想(理解):

   有限状态机,看到名字后,你就会猜:有限个状态而组成的机制。也蛮确切地阿:),那么很显然就要把你的状态摆出来。状态吗,有许多种,你会自然想到用1,2,3,4 等等来表示状态,而这些1,2,3,4 等等也再进一步,可以用enum来表示状态,然后就是switch,case来选择状态进而处理。这是初步的构想。

    然而如果遇到状态居多,那么case就要像面条一样,并且调试起来也不方便(书上说的,自己调试一下就知道了)。并且状态的扩展也称了问题,除非去enum里加,也就是扩展性不好。

    后来就想到了建立State基类,让每个具体的状态去继承,具体的具体的状态再去继承具体的状态,等等。

来解决扩展性,和状态之间的联系问题。对了State这个基类还有一个虚函数execute,美其名曰:执行。

在某个具体的状态,会干某个具体的事情。就是这个意思。比如在睡觉,就是睡觉状态:做梦就是睡觉执行的东西,当然也可以不做梦,打虎楼也行,你自己定义了。理解这个execute就行了。

   对了,忘了角色的定义了,没有角色,何来状态。当然角色的定义比较广泛,可以指人物,树木,天气,一块石头也行。那么要定义一个基类了:BaseGameEntity 。这个角色要有自己的ID,就好比每个人都有身份证一样,这个ID不能重复的。还有角色总要干些事情,那么自身会在不断改变,那么就定义一个update函数了。那么这个基类也就基本上搞定了,update函数搞成纯虚的就行了。

    具体角色实现什么,就自己定义了。    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
变长指令周期是指在计算机指令执行过程中,不同指令所需要的周期长度可能不同。时序发生器FSM(Finite State Machine)设计是一种用于控制时序的方法。 在设计变长指令周期的时序发生器FSM时,首先需要确定指令执行的各个阶段,并给每个阶段分配一个时钟周期。这些阶段可以包括指令获取、指令解码、操作数准备、运算、结果存储等。不同指令所需的时钟周期数会根据指令的复杂性和执行过程中所需的操作不同而有所不同。 设计时序发生器FSM时,可以采用状态机(State Machine)的概念。状态机可以用状态和状态之间的转换来表示指令执行的不同阶段。根据指令的特性,可以将不同指令识别为不同的状态,然后根据指令的不同要求和执行过程的需要,确定状态之间的转换条件和转换逻辑。 在设计时需要考虑的是,如何根据指令的类型和执行过程的要求,灵活地控制时序发生器FSM的状态转换。可以使用逻辑电路或程序设计来实现这些状态转换逻辑。通过合理地设计状态和转换条件,可以满足不同指令的执行需求,使得变长指令周期得以实现。 总的来说,变长指令周期的时序发生器FSM设计需要确定指令执行的各个阶段和时钟周期,并采用状态机的概念来表示不同指令的不同阶段。根据指令的要求和执行过程的需要,通过逻辑电路或程序设计,灵活地控制时序发生器FSM的状态转换,实现变长指令周期的执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值