2009-08-18 92 views
1

我们正在制作一个游戏,玩的角色会有几种不同的状态。在大多数例子中,我在可控制字符的基础上看到一个switch语句。这是大多数游戏的标准方式吗?或者,创建一组处理该状态的动画和逻辑的状态会更好吗?看起来后者会创建很多可能不必要的类,但会有更大的灵活性。 case语句会使代码更加混乱,但是整体文件会更少。我知道对于AI类型的函数,使用状态模型会更好。我想我在做什么,我应该为“简单的事情”做一个状态对象,如“走路”,“走路”。还是有更好的方式去做我失踪的事情?国家和可控游戏对象

谢谢,希望这已经够清楚了。

回答

2

这一切都取决于您的switch语句有多大。我个人倾向于制作一堆状态对象。如果你因此而最终拥有一堆文件,那就这样吧。这可能会使代码更易于理解,因为每个状态都是其他代码干扰它的机会较少的模块。当你试图推断一个国家的行为时,会有更少的杂项代码来分散你的注意力。

将您的设计分解成小块以便您可以编码,并且如果可能的话,将它们作为独立模块进行测试是一种很好的做法。这将使您的调试更容易。你不需要模糊化所有事情,但我会倾向于许多小班,而不是一些尴尬的小班。

对于创造没有必要的东西,你有点小心谨慎。太多的灵活性最终会成为一种维护的痛苦。让它足够灵活来处理你目前的问题。不要花费太多精力来解决假设的未来需求。专注于你现在需要的东西。你观察到一个有很多案例的大型switch语句会使代码变得混乱。我认为这就给你答案。通过小函数和小类倾向于简单的代码。当然你会有很多这样的东西,但是要把握多少个小函数合在一起,要比在一个巨大函数中堆叠在一起的大量语句合起来容易得多。

0

考虑使用跳转表(也就是分支表,或者更可能是现在的函数或方法表)作为简单的事件语句和完整的状态机之间的中间地带。