许多FSM框架允许创建FSM定义转换矩阵,该矩阵由以下内容组成:
我想处理这样的情况: 我有一场比赛。一些玩家(未知数量)可以加入游戏。玩家可以显示他是否准备按下开始按钮。所有其他玩家都会收到有关按下开始按钮的通知。当最后一个玩家按下按钮时,游戏开始。
所以我不知道如何使用转换矩阵来定义我的游戏状态机。看起来有时启动事件会导致转换到同一状态,而最终会转换到新状态。也许问题在于糟糕的状态/事件设计?
答案 0 :(得分:0)
如果仍然有用,那么您可以在这里用2种状态对空间进行建模:
然后使用计数器监视事件。让我们说N是玩家人数,每当玩家单击就绪设置counter = counter + 1
时,N即可。一开始,您的活动称为PlayersReady = false
。在每个PlayersReady = counter >= N
周期中,您可以监视每个人是否准备就绪。 PlayersReady成为您的过渡逻辑:
Initial state = NotReadyState
if (NOT PlayersReady)
newState = NotReadyState
else
newState = ReadyState