3

我正在用 Java 做一个小小的编程练习,让我回到上学前的状态。我的程序将与视频游戏(军团要塞 2)相关,因此我需要存储有关大量武器的数据。

我当前的模型是我为每种武器设置了一个类(例如 Scout_Primary 或 Soldier_Secondary),我将根据选择的特定武器修改每个类中的变量。例如,如果 Scout_Primary 是“Scattergun”,我将相应地修改其基础伤害并重新加载速度。

如果你熟悉 TF2,你就会知道有大量的武器。如何在我的程序中存储所有武器的统计数据?我不希望为一个类别中的每个武器编写包含统计数据的巨大 switch 语句。我非常渴望更多地使用 SQL(我有一些经验但不是太多,我以前使用过 JDBC)。

是否可以创建一个数据库并将其与程序本身打包,这样我就不必担心托管?我唯一的经验是使用远程数据库。

我想做的是拥有该本地数据库并执行选择并将数据传递给构造函数。提前致谢。

编辑:我一直在看德比,这是正确的方向吗?

4

5 回答 5

1

是的,SQL 可能适用于此。您应该研究一下Apache Derby,它的主要优点是它是轻量级的并且很容易嵌入到 Java 应用程序中。你可以做你所说的——在本地使用它。

唯一的问题是将实际数据与您的应用程序捆绑在一起。我建议你从一个简单的文件开始,可能是 JSON 或 XML 编码,甚至只是 CSV - 基本上是你选择的任何东西。然后当程序启动时,您检查数据库是否存在。如果没有,则创建它,读取文件,并将文件中的数据存储到数据库中。然后,您就可以使用 SELECT 语句或您想要的任何其他语句进行查询了。

于 2012-08-23T19:00:54.827 回答
0

为什么每种武器都需要不同的等级?我想创建一个类武器会是更好的选择,或者更确切地说是一个可以被各种其他类别的武器扩展的抽象类。如何将武器存储在collection(列表,地图,根据您要执行的操作类型设置)中。如果您的目标是存储游戏统计数据并将游戏作为基于 Web 的应用程序启动,建议使用数据库

于 2012-08-23T18:58:21.630 回答
0

无论您选择什么,您很可能都必须使用某种数据库来保存您的武器。SQLite 是最小且最容易实现的一种,尽管它需要一些 SQL 背景知识。

您还可以将所有武器存储在 JSON 或 XML 格式的纯文本文件中……我会选择 JSON,因为它会减少您的输入,但 XML 也很容易做到(而且我很确定有XML 解析器已经可用)。然而,JSON 更容易实现,即使您仍然需要从 json.org 下载源代码。

{
"weapons": [
    { "name":"Scattergun" , "damage":"5" },
    { "name":"Flamethrower" , "damage":"8" , "pyro":"yes" }
]
}

如您所见,我对TF2一无所知。

于 2012-08-23T18:59:11.937 回答
0

我建议使用数据库,特别是因为您提到有 JDBC 经验。

如果您不想担心在您的服务器上安装数据库引擎,例如 MySQL 或 Postgres,您可以使用H2 数据库引擎,它可以与您的 Java 应用程序一起分发。

H2 是用 Java 编写的,并且有一个 JDBC API。

于 2012-08-23T19:02:23.250 回答
0

我认为一个简单的类武器可以做到这一点:

class Weapon {
  private WeaponType weaponType;
  private ClassType classType;
  private int damage;
  ...
}

enum WeaponType {
  PRIMARY, SECONDARY, ..
}

enum ClassType {
  SCOUT, SOLDIER, ...
}

您还可以使用Jackson等库将其映射到/从 json 映射。如果您必须不时手动更新值,则 Json 与数据库相比要简单得多。

于 2012-08-23T19:02:59.980 回答