1

我们正在制作一款游戏,其游戏角色将具有多种不同的状态。在大多数示例中,我看到基于状态的可控字符中的 switch 语句。这是大多数游戏的标准处理方式吗?或者创建一组状态来处理该状态的动画和逻辑是否更好。后者似乎会创建许多可能不是必需但具有更大灵活性的类。case 语句会使代码更混乱,但整体文件更少。我知道对于 AI 类型的函数,最好使用状态模型。我想我在做什么,我应该为简单的事情创建一个状态对象,比如“walkleft”,“walkright”吗?还是有更好的方法来做我错过的事情?

谢谢,希望这足够清楚。

4

2 回答 2

2

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

将您的设计分解成小块是一种很好的做法,这样您就可以编写代码,如果可能的话,将它们作为独立模块进行测试。这将使您的调试更加容易。你不需要对所有东西都模块化太得意忘形了,但我会倾向于许多小班,而不是几个大而笨拙的班。

你对创造不必要的东西有点谨慎是对的。过多的灵活性最终会让人难以维持。只需使其足够灵活以处理您当前的问题。不要在解决假设的未来需求上投入太多精力。专注于你现在需要的东西。您观察到包含大量案例的大型 switch 语句会使代码变得混乱。我认为这会给你你的答案。倾向于具有小函数和小类的简单代码。当然你会有很多,但是要掌握有多少小函数组合在一起,要比在一个庞大的函数中堆叠在一起的无数语句如何组合在一起要容易得多。

于 2009-08-18T22:43:30.110 回答
0

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

于 2009-08-18T22:21:50.013 回答