![]() |
1
1
如果你在一个对象中有游戏状态(例如散列图,或者你自己设计的对象),那么你可以用普通的 XStream ,然后再次使用xstream将其读取回新对象。 有一个 two minute tutorial 演示如何序列化/反序列化。它可以毫不费力地处理大多数对象——您不需要实现或指定任何特定的接口。也不需要JAXP、SAX、DOM等。 |
![]() |
2
4
对于一个基于2d图块的游戏,XML可能是多余的。XML很好地存储分层数据和/或标记的文本,但听起来您只需要一种编码二维平铺设置网格的方法,这对于简单的旧文本文件来说要容易得多。 只需让每一行都是一行瓷砖,然后决定每个瓷砖需要多少字符(可能一个或两个字符就可以了)。然后决定如何用文本文件中的字符来表示二维世界中的对象。 在 SokoBean (这是我10年前写的一个游戏,所以我用的不是我所说的最好的作品,而是任何东西) text files like this one . 除了比XML更容易解析之外,还可以使用普通的旧文本编辑器作为级别编辑器。 |
![]() |
3
2
您使用文件是为了内部目的。简短的回答是,只要文件格式符合您的目的,就可以了。您确实希望尽可能地确保格式清晰、尽可能简单和可扩展。这里最重要的一点是提取数据读写到代码中负责读写文件格式的一个点。 常见的格式很常见,因为它们简单且受良好支持—您不需要编写特殊的代码来解析文件(属性文件,基本上只是一个键值对列表和XML文件—将XML文件视为编写任意深度嵌套字典的一种方式)。 |
![]() |
4
2
当然,这取决于您的需要,但是XML格式给您带来了很多好处,我可能会自己在这样的项目中选择XML。
|
![]() |
5
2
如果这纯粹是一个基于图块的游戏,那么一个纯文本文件可能就是解决问题的方法。 您可能需要固定宽度的整数,每行后用换行符分隔空格。易于阅读,并且易于解析,无需XML库。 编辑: 一个重要的建议: 无论你决定做什么,都要把它封装起来!创建一个读卡器接口,它接受通用输入流并返回(或填充)网格结构是什么。拥有一个采用网格结构和通用输出流并将数据转储到该输出流的编写器接口。如果您改变了主意,想如何实现文件,或者想添加网络播放等,您将在以后感谢自己。 |
![]() |
6
2
就您自己的东西而言,尤其是游戏而言,XML被高估了。如果您在一家大公司工作,其他人需要查看您的文件的文本,XML 可以 有道理,但即使在这种情况下,你可能会写一个级别编辑器,可以为你做一切。
我建议您使用一个简单的文本文件,或者使用
上面提到的很多人都提到XML是好的,因为它有“自动序列化”,但我真的不认为在Java中工作时值得一提,因为上面列出的两种方法都是自动的,但在更高级的层次上。 另外,不要忘记使用XML标记表示二维图块映射是非常无意义的,而在字符文件中一行一行地编写它们是相当容易读写的。 前)
你可以做类似上面的事情,在哪里
我在许多专业游戏项目中使用了文本文件。事实上,我只在为某人完成承包工作时才使用XML,因为XML看起来“更专业”,即使在大多数情况下使用它是不必要的,而且只是浪费空间,这会使事情变得过于复杂。 另一个例子:
你可以想象会发生什么。然后,当您将文件读入Java时,简单地使用
以上XML格式: 或者像这样:
但是当你开始变得如此复杂的时候,你也可以开始使用
编辑 下面是一个可序列化的示例。
通常,您的文件如下所示:
|
![]() |
7
0
这取决于需要保存多少数据,以及需要如何检索数据。 XML可以很容易地用多个库翻译成Java POJO,因此这是一个优势。此外,你会发现它很容易学习和使用,只是尝试一些教程。 但是,如果需要保存大量数据,可以考虑使用嵌入式数据库或单独的SQL服务器,具体取决于您的应用程序。 |
![]() |
8
0
如果您是唯一要修改文件的人,请使用您想要的任何格式。但是,如果您希望用户、测试人员或其他人修改它,请使用XML。XML的一大优点是它是一种标准格式,许多人(甚至很多非程序员)都知道如何编写代码。 |
![]() |
9
0
我只考虑在我需要XML生态系统的某个部分时使用XML:验证、转换、自动序列化/反序列化等。但是我知道所有这些东西是什么,并且我知道如何使用它们来达到相当好的效果。 如果你不知道——从这个问题的要旨来看,我猜你也不知道——那么真正的问题是,“我应该学习所有这些东西,以便将信息保存在XML文档中吗?”答案是“你几乎肯定不应该”。 |
![]() |
10
0
您可以考虑使用类似javadb的嵌入式数据库,该数据库位于: http://developers.sun.com/javadb/ 嵌入它只需要2.5MB,您可能会发现以结构化、可靠的方式保存各种数据的能力非常有用。 有类似hibernate的ORM框架,您可以使用它来处理数据,但对于您的应用程序来说,这可能是多余的。您可以使用直接向前的JDBC。 祝你好运,玩得开心。 |
![]() |
11
0
作弊是个问题吗?如果是这样,那么无论输出是什么,我都会加密。如果不是这样,那么只输出纯文本。 就格式而言,我将使用XML。你可以做一些像
这将提供一个很好的可读格式,可以存储相当多的数据。 |
![]() |
12
0
我使用一个类(实现java. Io.SerialCalaby)来存储游戏统计信息。 然后我使用ObjectOutputsteam将该类写入一个文件。 要加载该类,可以使用Objectinputstream。 马蒂恩 |
|
user29759326 · 如何返回递归函数中的最后一个值? 7 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 7 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 7 月前 |
![]() |
rudraraj · java中未声明最终变量 8 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 8 月前 |