2

考虑一个类似于 pac-mac 的游戏,我们想用 FSA 图来表示它。我们有一个迷宫(桌子),里面有随机位置的浆果。目标是吃掉迷宫中的所有浆果。我们必须考虑的控制命令如下:
GOAHEAD、LEFT、RIGHT、CHECKBERRY(检查吃豆人前面是否有浆果)、EAT 和 OFF-MAZE。
我们需要最多 10 个阶段......并且请记住,我们不能连续有多个间隙。谢谢

编辑: 替代文字 http://img338.imageshack.us/img338/2479/graphp.jpg

好吧。我创建了图表,但找不到跨越间隙的方法。例如:在迷宫中,经过一排浆果后,突然前面出现了一个缺口,下一个浆果就在缺口的下方。所以我不确定我的图表会是什么样子,即使我向左或向右转 checkberry 命令也不会返回 TRUE 值。所以必须有一种方法让吃豆人在不吃东西的情况下移动到间隙广场,但它如何决定是移动到前面的那个还是其他的?

4

2 回答 2

2

如果您正在设计状态图,请尝试首先弄清楚您的状态机将具有什么样的状态,而不是对状态进行编号。

这是一个简单的例子,你的“吃豆人”需要走路、检查和吃饭。所以有 3 个状态IS_WALKING和。直线前进和吃东西的图表可能如下图所示。我不确定您使用的是哪种图表符号,但我希望它会为您清除一些东西。IS_CHECKINGIS_EATING

                     GO_AHEAD
       +------------------------------------+
       |                                    |
       v                                    |
+----------------+      false            +------------+
| IS_CHECKING    |---------------------->| IS_WALKING |
+----------------+                       +------------+
| E: CHECK_BERRY |                          ^
+----------------+                          |
       |                                    |
       | true                               |
       v                                    |
 +-----------+               EAT            |
 | IS_EATING |------------------------------+
 +-----------+

一旦你有合适的状态名称,转换就会更自然,更容易理解。一个好的状态名称的例子是一个非常清楚地说明状态机在特定时刻正在做什么的例子。

于 2009-11-08T15:05:53.843 回答
1

如果您正在就此类问题寻求 Stackoverflow 的帮助;你显然需要看看你在做什么。你的问题需要更具体。您是否对特定的编码问题有疑问,或者您不知道从哪里开始?这是一个琐碎的练习还是成熟的项目?

试着画一张你想做什么的思维导图,看看你可以从那里用你目前拥有的技能去哪里。遇到实际问题后再回来。

于 2009-11-08T12:41:22.097 回答