我试图弄清楚如何设计以下系统,我认为可以将其定义为有限状态机:
假设我们有一堆 16 个积木(塔楼、墙壁、大门)一起形成了一座城堡。玩家可以将积木拖到平面图上的 16 个位置,如果操作正确,他们将看到整个城堡。所有的塔(有四个)都是相等的,所以它们可以在四个角落中的任何一个上。一些墙壁也是如此。
总而言之,平面图上有 16 个点,您可以在其中放置一个积木,每个点可以有 17 个“状态”:空 + 16 个积木中的任何一个。做一些数学运算会导致 17^16=很多组合。
该程序从一个空的平面图和一堆积木开始。然后它应该显示一条消息,例如“建造你自己的城堡,从塔开始”。当用户正确放置一个塔时,它应该说“做得好,现在建造所有四个塔”。你明白了。
问题是:玩家可以做的事情太多了。在错误的地方放置一个块,移除一个块,正确地在平面图上放置墙壁或塔,忽略给他们的方向,等等。
如果我可以避免使用数千个 if-then 语句来决定我应该采取下一步、显示错误消息还是根据玩家正在做的事情返回上一步,那就太棒了。
您如何描述构建序列的每个步骤的 NEXT、PREVIOUS 和 ERROR 条件?有什么设计方法吗?非常感谢您的意见。