保存对象以备将来使用

时间:2014-04-12 20:57:19

标签: java

我正在编写一个程序(机器人)来在AI竞赛中玩类似风险的游戏。我是编程新手,所以到目前为止我已经使用了一些非常基本的编码。在这个游戏中,程序的每一轮都从游戏引擎接收一些信息。在程序中,我有一个类BotState,它允许我处理来自当前回合的信息,例如对手机器人移动,或当前在我控制下的区域等。这些信息放在一些{{ 1}}。我有一些getters访问这些信息并在主类中使用它们。

我的问题是,每轮,信息都被覆盖(每一轮意味着新的程序运行),所以我只能访问当前轮次的信息。我想要做的是保存每一轮的所有信息,以便例如如果游戏状态是第10轮,我仍然可以访问对手在第8轮进行的移动。

我找到了解决这个问题的方法,我遇到了一些名为"对象序列化"。我还没有完全理解它是如何工作的,所以我想知道是否有更简单/更好的方法来做我想要的,或者序列化是否可行。谢谢你的帮助。

编辑:我无法将程序链接到我的磁盘或数据库。我将机器人的源文件上传到游戏服务器,所以一切都必须在源文件中

2 个答案:

答案 0 :(得分:1)

对于您的情况,对象序列化应该相当简单 简单地说,它是一种将对象存储在磁盘上的方法 稍后从磁盘中获取数据并重新创建对象
在内存中处于序列化之前的状态。

另一种方法是自己定义某种表示方式 例如作为XML块和每个对象并存储这些 XML文件中的块。您可以将其视为自定义序列化
但它仍然是一个序列化。

另一种方法是将对象存储到数据库中。

总而言之,您需要一些永久/持久存储 对于您的对象(无论是直接磁盘还是数据库) /它再次使用最低级别的磁盘/)。

答案 1 :(得分:1)

考虑为您的应用程序使用建模框架。 Eclipse Modeling Framework (EMF)内置了一个简单的XMI序列化。如果您的模型很小和/或足够简单,那么它可能是值得的。请查看this EMF introduction tutorialthis tutorial on serialization in EMF

另外,请看一下这个问题:What's the easiest way to persist java objects?