0

我正在使用 Robocode 开发 GA 坦克,这些坦克不断进化以提供更好的性能(达到最高的健身水平),为了做到这一点,我需要将每个坦克的信息存储在一个文件中。

Tank 类将有几个变量,例如:

  • 速度
  • 角动量
  • 火力
  • 扫描速率

我想要一种能够将这些变量保存在名为“settings.txt”的文件中并能够在战斗后更新它们的方法。

我希望文件的格式如下:

robot(1):
speed=12
angMomentum=6
firePower=2
scanRate=10

robot(2):
speed=8
angMomentum=4
firePower=3
scanRate=13

编写这样的文件并能够在每次战斗后轻松更新变量值的最佳方法是什么?

非常感谢。

4

4 回答 4

0

如果您希望将所有数据放在一个大文件中。也许使用JSON 格式之类的东西是个好主意,因为您可以维护您的对象结构。使用变量、对象和数组。

有很多可用的 JSON 读取器和写入器。甚至可以在这里找到一些“官方”bij json.org

您的 JSON 可能如下所示:

{
    "tanks":[
        {"id": 1, "speed": 12, "angMomentum": 6, "firePower": 2, "scanRate": 10},
        {"id": 2, "speed": 8, "angMomentum": 4, "firePower": 3, "scanRate": 13}
    ]
}
于 2012-03-10T15:13:10.150 回答
0

您应该真正研究一下 Java Serialization,它可以让您将纯 Java 对象存储和检索到磁盘。

如果您真的想创建自己的自定义格式,则必须自己实现解析器。您可以使用java.ioand FileAPI 将字符串写入磁盘或从文件中读取,例如逐行读取。

于 2012-03-10T15:15:10.740 回答
0

您可以使用XStream将对象序列化为 XML 格式,例如:

<tank>
    <id>1</id>
    <speed>12</speed>
    <angMomentum>6</angMomentum>
    <firePower>2</firePower>
    <scanRate>10</scanRate>
</tank>

定义对象应该如何在 XML 中表示非常容易(您可以在 XStream 对象上使用注释或方法)。

于 2012-03-10T16:33:10.983 回答
0

该类Properties具有您需要的一切:使用属性来存储配置值。它为您处理磁盘的读取和写入,并Map为您存储和检索值。不需要序列化,这在长期存储或 XML/JSON 解析方面非常脆弱。

于 2012-03-10T17:06:10.903 回答