FSM - 条件转换

时间:2018-04-05 19:58:12

标签: state-machine

许多FSM框架允许创建FSM定义转换矩阵,该矩阵由以下内容组成:

  1. 状态
  2. 事件
  3. 新州
  4. 动作
  5. 我想处理这样的情况: 我有一场比赛。一些玩家(未知数量)可以加入游戏。玩家可以显示他是否准备按下开始按钮。所有其他玩家都会收到有关按下开始按钮的通知。当最后一个玩家按下按钮时,游戏开始。

    所以我不知道如何使用转换矩阵来定义我的游戏状态机。看起来有时启动事件会导致转换到同一状态,而最终会转换到新状态。也许问题在于糟糕的状态/事件设计?

1 个答案:

答案 0 :(得分:0)

如果仍然有用,那么您可以在这里用2种状态对空间进行建模:

  • NotReadyState
  • ReadyState

然后使用计数器监视事件。让我们说N是玩家人数,每当玩家单击就绪设置counter = counter + 1时,N即可。一开始,您的活动称为PlayersReady = false。在每个PlayersReady = counter >= N周期中,您可以监视每个人是否准备就绪。 PlayersReady成为您的过渡逻辑:

Initial state = NotReadyState if (NOT PlayersReady) newState = NotReadyState else newState = ReadyState