我正在做一个简单的游戏,保存和加载。到目前为止,我有保存游戏的工作,它将所有的对象位置保存到一个.dat文件。每行有3个坐标(x,y,z)以冒号分隔。例如:阅读Java文件
23.762622833251953:3.887784719467163
22.5:0.5:18.5
23.5:0.5:20.5
26.5:0.5:5.5
28.5:0.5:21.5
30.5:0.5:4.5
33.5: 0.5:19.5
35.5:0.5:4.5
38.5:0.5:15.5
39.5:0.5:3.5
41.5:0.5:9.5
第一行是玩家第一人称视角的坐标。这很容易实现,因为我将每个坐标传递给一个数组,所以x位置是第一个元素[0],z坐标是第二个元素[1]。 y坐标始终是相同的,即使是块,所以我没有打扰保存它,但我出于某种原因为块做了。
这里是保存游戏的方法,包括:
public void saveGame()
{
File file = new File("quickSave.dat");
try {
FileWriter writer = new FileWriter(file);
writer.write(env.getCameraX()+":"+env.getCameraZ()+"\n");
for (int row = 0; row < map.length; row++)
{
for (int col = 0; col < map[row].length; col++)
{
if (map[row][col] != null) {
EnvObject block = map[row][col];
writer.write(block.getX()+":"+block.getY()+":"+block.getZ()+"\n");
}
}
}
writer.close();
JOptionPane.showMessageDialog(null, "Game saved");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
问题是从文件读取的每一行,然后使这些坐标到对象。我只将传球坐标贯彻到球员的角度,这很容易,因为我只用了2个元素。
我正在考虑制作2维的另一个数组(取出y坐标,中间一个),每个元素都是文件中的一行,但我该怎么做?或者这是另一种更优雅的方式?
这是迄今为止我加载游戏方法:
public void loadGame() {
File file = new File("quickSave.dat");
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
String[] elements = line.split(":");
env.setCameraXYZ(new Float(elements[0]), 0.5,
new Float(elements[1]));
JOptionPane.showMessageDialog(null, "Game loaded");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
你可以让*问题*清楚吗?这是一个故事,而不是一个问题。 – ripper234 2011-03-21 22:42:52
你真的需要将它们保存为纯文本吗? – James 2011-03-21 22:44:27
嗯......文件中的每一行都是一对坐标。我想将每一行坐标传递给一个在3D环境中给它定位的对象。我该怎么做呢? – 2011-03-21 22:44:39