有限状态机

Demo链接:https://download.csdn.net/download/qq_35433081/10473923

一、有限状态机

第一种方法:
实例化状态。每次切换状态时动态new出新的状态。
1.每个状态都是对应一个状态脚本来管理
2.哪个状态初始化英雄,则英雄就执行那种状态
3.英雄的状态再自己脚本中update()不断更新的
此种方法:在用某个状态的时候初始化一个状态,边切换状态边初始化,不需要维护状态列表
缺点:
对存在的状态不能一目了然,不够清晰
状态的不能有数据成员
第二种方法:
静态状态。初始化时把所有可能的状态都new好,状态切换时通过赋值改变当前的状态。
1.刚开始就把需要的状态添加到状态列表中。需要维护一个字典来更新目前存在的状态
2.状态机一直检测执行更新状态
3.推荐使用静态状态,因为它们不会在状态转换时消耗太多的内存和CPU


二、回退状态机

http://gameprogrammingpatterns.com/state.html

 heroine-->

    Run-->fire     SetDown-->fire      Jump--->fire

 状态Rnu->Fire-之后必须回溯到之前的状态


把一个新的状态推到堆栈上。“当前”状态总是位于堆栈顶部的状态,因此这将过渡到新的状态。但是它把前一个状态直接放在堆栈下面,而不是丢弃它。

你可以从堆栈中取出最上面的状态。这个状态被丢弃,它下面的状态变成了新的状态。

把这个fire状态一直放到顶部,用完后移除

在游戏中的应用:
它们是在人工智能中使用,但它们在用户输入处理、导航菜单屏幕、解析文本、网络协议和其他异步行为的实现中也很常见。



在游戏中,它们最出名的是在人工智能中使用,但它们在用户输入处理、导航菜单屏幕、解析文本、网络协议和其他异步行为的实现中也很常见。
利用 VHDL 设计的许多实用逻辑系统中 有许多是可以利用有限状态机的设计方案来 描述和实现的 无论与基于 VHDL 的其它设计方案相比 还是与可完成相似功能的 CPU 相比 状态机都有其难以逾越的优越性 它主要表现在以下几方面 h 由于状态机的结构模式相对简单 设计方案相对固定 特别是可以定义符号化枚 举类型的状态 这一切都为 VHDL 综合器尽可能发挥其强大的优化功能提供了有利条件 而且 性能良好的综合器都具备许多可控或不可控的专门用于优化状态机的功能 h 状态机容易构成性能良好的同步时序逻辑模块 这对于对付大规模逻辑电路设计 中令人深感棘手的竞争冒险现象无疑是一个上佳的选择 加之综合器对状态机的特有的优 化功能 使的状态机解决方案的优越性更为突出 h 状态机的 VHDL 设计程序层次分明 结构清晰 易读易懂 在排错 修改和模块 移植方面 初学者特别容易掌握 h 在高速运算和控制方面 状态机更有其巨大的优势 由于在 VHDL 中 一个状态 机可以由多个进程构成 一个结构体中可以包含多个状态机 而一个单独的状态机 或多 个并行运行的状态机 以顺序方式的所能完成的运算和控制方面的工作与一个 CPU 类似 由此不难理解 一个设计实体的功能便类似于一个含有并行运行的多 CPU 的高性能微处 理器的功能 事实上这种多 CPU 的微处理器早已在通信 工控和军事等领域有了十分广 泛的应用 h 就运行速度而言 尽管 CPU 和状态机都是按照时钟节拍以顺序时序方式工作的 但 CPU 是按照指令周期 以逐条执行指令的方式运行的 每执行一条指令 通常只能完 成一项操作 而一个指令周期须由多个 CPU 机器周期构成 一个机器周期又由多个时钟 周期构成 一个含有运算和控制的完整设计程序往往需要成百上千条指令 相比之下 状 态机状态变换周期只有一个时钟周期 而且 由于在每一状态中 状态机可以完成许多并 行的运算和控制操作 所以 一个完整的控制程序 即使由多个并行的状态机构成 其状 态数也是十分有限的 因此有理由认为 由状态机构成的硬件系统比 CPU 所能完成同样 功能的软件系统的工作速度要高出两个数量级 h 就可靠性而言 状态机的优势也是十分明显的 CPU 本身的结构特点与执行软件 指令的工作方式决定了任何 CPU 都不可能获得圆满的容错保障 这已是不争的事实了 因此 用于要求高可靠性的特殊环境中的电子系统中 如果以 CPU 作为主控部件 应是 一项错误的决策 然而 状态机系统就不同了 首先是由于状态机的设计中能使用各种无 懈可击的容错技术 其次是当状态机进入非法状态并从中跳出所耗的时间十分短暂 通常 只有 2 个时钟周期 约数十个 ns 尚不足以对系统的运行构成损害 而 CPU 通过复位方第 10 章 有限状态机 FSM 199 式从非法运行方式中恢复过来 耗时达数十 ms 这对于高速高可靠系统显然是无法容忍 的 再其次是状态机本身是以并行运行为主的纯硬件结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Debug_horizon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值