2015-01-08 24 views
2

因此,我目前正在制作2D游戏,其中地图是在.txt文件中预先生成的,然后读取并加载到数组中。更高效的将int从.txt传输到数组的方式

该数组存储在World类(我正在使用greenfoot),而我正在这样做的方法是:(地图被声明并初始化为之前的世界大小,并且地图是一个完美的矩形)

Scanner scan = new Scanner (new File("map.txt")); 
for(int i = 0; i<map.length;i++) 
{ 
    for(int j = 0;j<map[0].length; j++;) 
    { 
    map[i][j]=scan.NextInt(); 
    } 
} 

(异常被捕获和扫描仪后关闭) 我的地图是目前600x5000,并传送数据的方法似乎很慢。有什么方法可以加快速度或使用更高效的方式来完成此操作?

在此先感谢!

+0

您可以尝试使每2个字节(=每2个字符)表示一个地图块。因此,您可以节省一些运行时间来检索地图 –

+0

在竞争编码领域,建议使用['BufferedReader'](http://docs.oracle.com/javase/8/docs/api/java /io/BufferedReader.html)而不是'Scanner'来读取数据,因为速度更快。这对你的情况也是有利的。 – apnorton

+0

或甚至每个字节都是一个块,如果你不需要超过256个对象在游戏中 –

回答

1

不是以文本格式存储数据,而是尝试使用旨在处理二进制数据的二进制格式。

如果您不想添加任何库,请尝试java序列化/反序列化,使用它您将能够存储完整的数组并将其读取为完整数组。

+0

嘿,我还没有在12年级的计算机科学中了解到这一点。 = p更简单的方法? – Conanap

+0

这并不困难。文件是表示字符的字节列表。因此,电子字母实际上是一个数字,例如152.因此,您的文件的每个字节都将是一个小于256的数字,因为一个字节可以表示0到255之间的数字。这个数字将表示地图块的“代码”。 –

+0

它会快得多。否则,如果您选择扫描整数,那么这是您的选择,您将不得不等待地图加载并像其他游戏一样进行:显示“前导”屏幕 –