我試圖讓我的周圍如何設計以下系統,我認爲可以定義爲一個有限狀態機頭:如何設計這個特定的有限狀態機?
假設我們有一堆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