今天早些时候我在想一个小游戏的想法,偶然发现了如何实现它。这个想法是,玩家可以做出一系列动作,产生一点影响,但如果按照特定的顺序进行会产生更大的影响。到目前为止一切顺利,我知道该怎么做。显然,我必须让它变得更复杂(因为我们喜欢让它更复杂),所以我认为序列可能有不止一种可能的路径,它们都会产生更大的影响,尽管是不同的。此外,某些序列的一部分可能是其他序列的开始,甚至整个序列可能包含在其他更大的序列中。现在我不确定实现这一点的最佳方法。不过,我有一些想法。
1)我可以实现一个循环n链表。但是由于移动列表永远不会结束,我担心它可能会导致堆栈溢出™。这个想法是每个节点都会有 n 个子节点,并且在收到命令后,它可能会将您带到他的一个子节点,或者,如果没有子节点可用于该命令,则将您带回到起点。到达任何孩子时,都会执行几个功能,从而产生大小影响。但是,这可能会导致树上出现许多重复的节点,以应对所有可能以该特定动作结束并具有不同效果的序列,这可能很难维护,但我不确定。我从来没有在代码上尝试过这么复杂的东西,只是理论上。这个算法是否存在并且有名字?这是个好主意吗?
2)我可以实现一个状态机。然后,我不会在链表中徘徊,而是有一些巨大的嵌套开关来调用函数并相应地更新机器状态。似乎实现起来更简单,但是......好吧......看起来并不有趣......也不优雅。巨型开关在我看来总是丑陋,但这会更好吗?
3) 建议?我很好,但我很缺乏经验。编码领域的好处是,无论你的问题多么奇怪,过去有人解决了它,但你必须知道去哪里找。有人可能有比我更好的主意,我真的很想听听建议。