我们正在制作一个具有几种不同状态的游戏角色的游戏。在大多数示例中,我在可控制的charactor中看到基于状态的switch语句。这是大多数游戏的标准方式吗?或者更好的是创建一组处理该状态的动画和逻辑的状态。似乎后者会创建许多可能不必要的类,但会有更多的灵活性。 case语句会使代码更加混乱,但整体文件会更少。我知道对于AI类型函数,最好使用状态模型。我猜我得到了什么,我应该为简单的事情做一个状态对象,如'walkleft','walkright'?或者有更好的方法来做我错过的事情吗?
谢谢,希望这很清楚。
答案 0 :(得分:2)
这完全取决于你的switch语句的大小。我个人会倾向于制作一堆状态对象。如果你最终因此而拥有一堆文件,那就这样吧。这可能会使代码更容易理解,因为每个状态都是一个模块,其他代码干扰它的可能性较小。当你试图推断一个状态的行为时,会有更少的杂项代码来分散你的注意力。
优良作法是将您的设计分解成小块,以便您可以编码,并且如果可能的话,将它们作为独立模块进行测试。这将使您的调试更容易。你不需要过于模糊化一切,但我会倾向于许多小班而不是一些笨拙的小班。
你有必要对创造不必要的东西保持警惕。太多的灵活性最终会让人难以维持。只需使其足够灵活,以处理您当前的问题。不要过多努力来解决假设的未来需求。专注于你现在需要的东西。您观察到一个包含大量案例的大型switch语句会使代码变得混乱。我认为那样就能给你答案。倾向于使用小函数和小类的简单代码。当然你会有很多这样的东西,但要掌握多少小函数组合在一起要比在庞大函数中叠加在一起的无数语句更容易组合起来要容易得多。
答案 1 :(得分:0)
考虑使用跳转表(也称为分支表或更可能是当前的函数或方法表)作为简单case语句和完整状态机之间的中间地带。