在Java游戏中定义常量值的最佳实践

时间:2017-05-14 16:22:31

标签: java constants

我目前正致力于用Java编写基于回合制的策略游戏,我现在需要开始为某些游戏元素定义规则和行为。具体来说,地图上的每个图块都将包含建筑物。每个转弯,每个建筑物将根据建筑物的类型生产或消耗资源(木材厂将消耗1个原木并生产1个木材,面包店将消耗1个小麦并生产一个面包等) 。 Building类是通用的,字段buildingType表示它是什么类型的建筑物,BuildingType是枚举。对于同一类型的每个建筑物,这些规则将是相同的(所有面包店将遵守相同的规则等),并且它们将在整个游戏中保持不变。

我遇到问题的部分是在哪里定义这些规则。到目前为止,我已经提出了三个选择:

  1. 将每个建筑物消耗和生产的资源的类型和数量存储在磁盘上的文件中,并在游戏启动时读入此文件,并将内容存储在地图中。
  2. 创建一个类,该类将所有规则定义为静态字段,或者使用硬编码规则值填充地图,然后使用静态方法返回基于BuildingType的规则。
  3. 为每个Building创建BuildingType的子类,并将与该建筑类型对应的规则定义为每个Building子类中的静态字段。
  4. 现在,我考虑选项2有几个原因:

    • 磁盘读取很慢,因此在Java类中定义常量似乎会使游戏加载速度更快。
    • 在磁盘上放置一个单独的文件可以让讨厌的用户更容易修改规则。
    • 虽然选项3似乎更像是" Java-ish"方法,每个Buildings将表现完全相同的方式,只遵守不同的规则。因此,创建一堆简单定义不同常量的不同类似乎需要很多开销。
    • 我更喜欢将规则全部存储在一个中心位置,而不是分散在一堆不同的子类中。
    • 在选项2中使用static final常量似乎是确保规则是只读的最佳方法。

    我的问题是,在游戏中存储常量规则的标准惯例是什么?选择我错过的选项1或3有什么好处吗?是否有任何缺点,除了最终得到一个非常长的java文件,选项2,我没有看到?

0 个答案:

没有答案