我试图让我的周围如何设计以下系统,我认为可以定义为一个有限状态机头:如何设计这个特定的有限状态机?
假设我们有一堆16积木(塔楼,城墙,城门)一起形成一座城堡。玩家可以将这些积木拖到平面图上的16个地方,如果完成得当,他们会看到整个城堡。所有的塔楼(其中有四个塔楼)是相同的,所以它们可以在四个角落中的任何一个上。一些墙壁也是如此。
总的来说,在平面图上有16个点,你可以放置一个积木,每个点可以有17个“状态”:空的+ 16个积木块中的任何一个。做一些数学这导致17^16 =很多组合。
程序从一个空的平面图和一堆积木开始。然后它应该显示一条信息,比如“建造自己的城堡,从塔楼开始”。当用户正确地放置一个塔时,应该说“做得好,现在建造所有四个塔”。你明白了。
问题是:玩家可以做很多事情。把一个块放在错误的地方,删除一个块,正确地把墙或塔在整个布局图上,忽略给他们的指示等。
如果我可以避免使用数千个if-then声明来决定我是否应该采取下一步,显示错误消息或根据玩家的行为回到上一步。
您会如何描述建筑顺序每一步的NEXT,PREVIOUS和ERROR条件?有没有任何设计方法?非常感谢您的意见。
相关:http://stackoverflow.com/questions/1647631/c-state-machine-design – jldupont 2010-02-18 14:26:53
每个“布局图上的斑点”是否只允许一个块类型(例如墙)? – 2010-02-18 14:37:02
@审判:是的,它的确如此。然而,有四座塔完全相同,所以他们可以去城堡的四个角落。但是他们不应该去墙壁预期的地方,墙壁不应该被建立在预计塔的地方。 – Droozle 2010-02-18 16:48:23