dee*_*146 10 java state-machine switch-statement
基本上我有一个控制游戏角色攻击的状态机,其时间基于动画长度.
例如:
我从默认状态开始,如果玩家遇到攻击按钮,它会启动攻击,切换状态并根据攻击长度设置计时器.状态机变得更复杂但是当我考虑可以取消的充电攻击时,可以根据击中的内容移动到不同状态的攻击,并且每个州都有独特的方式来处理受到攻击的角色.目前我有大型的switch语句.我考虑过多态,但是对于每个状态都需要一个新类,其中有很多(例如,开始攻击,攻击和完成攻击都需要单独的状态).
switch语句有效,但它非常大,并且不像基于继承的系统那样容易修改.
有关良好实施的任何建议?
编辑:这是使用java.
对于较大的状态机,您必须注意"过渡爆炸"现象.事实证明,传统的有限状态机不提供重用许多状态的公共转换的机制,所以你最终重复过多而你的状态机"爆炸"(这也反对不要重复你自己( DRY)原则).
出于这个原因,我建议使用分层状态机和实现技术,以便将这些状态机轻松映射到代码.有关分层状态机的更多信息,请参阅Wikipedia文章http://en.wikipedia.org/wiki/UML_state_machine.