加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 实现大型状态机的最佳方法?

发布时间:2020-12-14 16:34:05 所属栏目:Java 来源:网络整理
导读:基本上我有一台控制游戏角色攻击的状态机,其时间基于动画长度. 所以例如: 我以默认状态开始,如果玩家遇到攻击按钮,则会发起攻击,切换状态并根据攻击长度设置定时器.然而,当我考虑可以取消的充电攻击,可以根据它们击中什么来移动到不同的状态的攻击,而且每个
基本上我有一台控制游戏角色攻击的状态机,其时间基于动画长度.

所以例如:

我以默认状态开始,如果玩家遇到攻击按钮,则会发起攻击,切换状态并根据攻击长度设置定时器.然而,当我考虑可以取消的充电攻击,可以根据它们击中什么来移动到不同的状态的攻击,而且每个状态都有独特的处理被攻击的角色的方式,状态机变得更加复杂.
目前我有大的switch语句.我想到了多态,但是对于有很多的每个状态,需要一个新的类(开始攻击,攻击和整理攻击都需要单独的状态).

switch语句工作,但它相当大,也不像基于继承的系统那么容易修改.

关于善意的实现的任何建议?

编辑:
这是使用java.

解决方法

使用较大的状态机,您必须注意“过渡爆炸”现象.事实证明,传统的有限状态机没有提供机制来重用许多州的常用转换,所以你最终重复太多,你的状态机“爆炸”(这也违反了Do-not-Repeat-Yourself(干)原则).

因此,我建议使用分层状态机和实现技术,允许将这种状态机轻松映射到代码.有关层次状态机的更多信息,请参阅维基百科文章http://en.wikipedia.org/wiki/UML_state_machine.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读