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

前端之家收集整理的这篇文章主要介绍了java – 实现大型状态机的最佳方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本上我有一台控制游戏角色攻击的状态机,其时间基于动画长度.

所以例如:

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

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

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

编辑:
这是使用java.

解决方法

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

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

猜你在找的Java相关文章