什么时候可以使用状态机模式呢?(状态比较少时都是可以使用状态机模式的)
比如:开灯,关灯。可以使用状态机模式处理
:敌人巡逻,当玩家到了警戒距离时,就会追击玩家,当到达了攻击距离就会攻击敌人。
巡逻-----追击----攻击—巡逻
代码实现:
//状态控制类
public class ControlState
{
public State state;
//切换状态
public void SetState(State state)
{
this.state = state;
}
public void Control()
{
state.Handle( this );
}
}
//状态接口
public interface State
{
void Handle(ControlState controlState);
}
//巡逻状态
public class PatrolState : State
{
public void Handle(ControlState controlState)
{
//当玩家到了警戒线时
controlState.SetState( new FollowState( ) );
}
}
//追击状态
public class FollowState : State
{
public void Handle(ControlState controlState)
{
//当到达了攻击距离时
controlState.SetState( new AktState( ) );
}
}
//攻击状态
public class AktState : State
{
public void Handle(ControlState controlState)
{
{
//当玩家死亡;进入巡逻状态
controlState.SetState( new PatrolState( ) );
}
{
//当玩家走出攻击距离时:进入追击状态
controlState.SetState( new FollowState( ) );
}
}
}
状态机模式的优点:
将状态判断逻辑放在每个状态类里面,可以简化判断的逻辑。
当有新的状态出现时,可以通过添加新的状态类来进行扩展,扩展性好。

本文深入探讨了状态机模式的应用场景,特别是在游戏开发中处理角色状态转换的实例,如敌人从巡逻到追击再到攻击的过程。通过状态机模式,可以简化状态判断逻辑,提高代码的可读性和扩展性。

被折叠的 条评论
为什么被折叠?



