我今天早些时候在想一个小游戏的想法,并且偶然发现了如何实现它。这个想法是,玩家可以进行一系列引起一点效果的动作,但如果以特定的顺序完成,会产生更大的效果。到目前为止这么好,我知道该怎么做。显然,我必须使它变得更加复杂(因为我们喜欢使它更加复杂),所以我认为序列可能有多条可能的路径,这两条路径都会产生更大的影响,尽管影响不同。另外,一些序列的一部分可能是其他序列的开始,甚至整个序列可能被其他更大的序列所包含。现在我不确定实现这一点的最佳方式。不过,我有一些想法。树算法
1)我可以实现一个循环的n链表。但是由于动作列表永远不会结束,所以我担心它可能导致堆栈溢出。这个想法是,每个节点将有n个孩子,并在接到命令后,可能会引导你到他的一个孩子,或者如果没有孩子可用于这样的命令,则引导你回到起点。到达任何儿童时,将会执行一些功能,从而产生小而大的效果。然而,这可能会导致树上有很多重复的节点,以应对以特定动作结束的所有可能的序列,并且具有不同的效果,这可能是一种维护的痛苦,但我不确定。我从来没有尝试过这种复杂的代码,只是在理论上。这个算法是否存在并且有一个名字?这是个好主意吗?
2)我可以实现一个状态机。然后,而不是在一个链表中漫游,我会有一个巨大的嵌套开关,可以调用函数并相应地更新机器状态。看起来实施起来更简单,但是......好吧......看起来并不有趣......也不是很美丽。巨型开关对我来说总是显得很丑,但是这样做会更好吗?
3)建议?我很好,但我很缺乏经验。编码领域的好处是,不管你的问题有多怪,有人在过去解决它,但你必须知道在哪里寻找。有人可能比我有更好的想法,我真的很想听听建议。
作为一般性评论,从一开始就简单并且稍后增加复杂性。 – 2008-10-09 13:38:05