具有有限状态自动机的吃豆人表示

时间:2009-11-08 12:17:29

标签: computer-science graph-theory compiler-theory finite-automata computation-theory

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

修改 alt text http://img338.imageshack.us/img338/2479/graphp.jpg

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

2 个答案:

答案 0 :(得分:2)

如果您正在设计state diagram,请先尝试确定state machine将具有哪种状态,而不是编号状态。

这是一个简单的例子,你的“pac man”需要走路,检查和吃饭。因此,有三种状态IS_WALKINGIS_CHECKINGIS_EATING。直接前进和进食的图表可能如下图所示。我不确定你使用的是哪种图表符号,但我希望它能为你清楚一些事情。

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

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

答案 1 :(得分:1)

如果您正在寻求Stackoverflow对此类问题的帮助;你显然需要看看你在做什么。你的问题需要更具体。您是否遇到特定编码问题,或者您不知道从哪里开始?这是否意味着一个微不足道的夸张或完整的项目?

尝试制作您想要做的事情的思维导图,并使用您目前拥有的技能了解您可以从哪里开始。一旦遇到实际问题,请回来。