首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计这个特殊的有限状态机?

如何设计这个特殊的有限状态机?
EN

Stack Overflow用户
提问于 2010-02-18 22:25:08
回答 1查看 562关注 0票数 0

我正在考虑如何设计以下系统,我认为可以将其定义为有限状态机:

假设我们有一堆16块的积木(塔,墙,门)在一起形成了一座城堡。玩家可以将积木拖到楼层平面图上的16个位置,如果操作得当,他们将看到整个城堡。所有的塔(有四个)都是相等的,所以它们可以在四个角中的任何一个上。一些墙也是如此。

总而言之,在平面图上有16个点,你可以在其中放置一个积木,每个点可以有17个“状态”:空+ 16个积木中的任何一个。做一些数学运算,这会导致17^16=a大量的组合。

程序从一个空的平面图和一堆积木开始。然后它应该会显示一条消息,比如“建造你自己的城堡,从塔开始”。当用户正确放置一个塔时,它应该说“干得好,现在把所有四个塔都建好”。你明白了吧。

问题是:玩家可以做的事情太多了。将积木放置在错误的位置,移除积木,正确地在整个建筑平面上放置墙壁或塔楼,忽略给它们的方向,等等。

如果我可以避免使用数以千计的if-then语句来决定是应该执行下一步、显示错误消息还是根据玩家正在做的事情返回到上一步,那就太棒了。

您如何描述构建序列中每一步的下一步、前一步和错误条件?对此有什么设计方法吗?非常感谢您的意见。

EN

回答 1

Stack Overflow用户

发布于 2010-02-18 22:38:11

试着以声明的方式来做这件事。定义一个枚举(或可能的类)来描述块的类型。定义并构造一个4x42D数组,描述每个位置允许的块类型的集合(将这些集合实现为列表、位域,任何最适合您的)。每当玩家试图将一个块放在一个位置上时,检查它是否对2D数组是允许的。如果你想让某个职位的特定消息被正确填写,也可以将这些消息放入同一个an数组中。

我不知道FSM是否真的是您想要的:您希望验证哪些类型的序列约束?先建塔有关系吗?从你剩下的描述来看,上面的目标状态描述听起来更合适。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2289245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档