用Java序列化游戏?
我正在尝试用Java序列化一个snake游戏,其中游戏必须有“保存”和“加载”选项。我没有收到任何错误,但每当我试图打印出生活,时间等。当生活和时间不应该是0时,它只会给我0 以下是我保存和加载部分的一些代码:用Java序列化游戏?,java,serialization,load,save,game-engine,Java,Serialization,Load,Save,Game Engine,我正在尝试用Java序列化一个snake游戏,其中游戏必须有“保存”和“加载”选项。我没有收到任何错误,但每当我试图打印出生活,时间等。当生活和时间不应该是0时,它只会给我0 以下是我保存和加载部分的一些代码: public void SaveGame() throws IOException { PnlCentro pnlCentro = new PnlCentro(); FileOutputStream fileOut = new FileOutputStream(f
public void SaveGame() throws IOException {
PnlCentro pnlCentro = new PnlCentro();
FileOutputStream fileOut = new FileOutputStream(fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(pnlCentro);
out.close();
}
public void LoadGame() throws FileNotFoundException, IOException, ClassNotFoundException {
PnlCentro p = null;
FileInputStream fileIn = new FileInputStream(fileName);
ObjectInputStream in = new ObjectInputStream(fileIn);
p = (PnlCentro) in.readObject();
System.out.println("Body: " + p.vecBody);
System.out.println("Life: " + p.life);
System.out.println("Timer: " + p.getTime());
in.close();
fileIn.close();
}
在SaveGame方法中,当您使用以下代码时,总是在序列化之前创建PnlCentro的新实例:
PnlCentro pnlCentro = new PnlCentro();
序列化之前没有对对象plnCentro的默认值进行修改,这可能就是为什么在反序列化之后读取零的原因。在SaveGame方法中,当您使用以下代码时,总是在序列化之前创建PnlCentro的新实例:
PnlCentro pnlCentro = new PnlCentro();
在序列化之前,没有对对象plnCentro的默认值进行任何修改,也许这就是为什么在反序列化之后读取零。我认为您的
SaveGame()
和LoadGame
方法工作得很好,它们只是不保存或加载当前游戏会话中的任何数据
public void SaveGame() throws IOException {
PnlCentro pnlCentro = new PnlCentro(); //<-- Problem likely lies here!
FileOutputStream fileOut = new FileOutputStream(fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(pnlCentro);
out.close();
}
我认为您的
SaveGame()
和LoadGame
方法工作得很好,它们只是不保存或加载当前游戏会话中的任何数据
public void SaveGame() throws IOException {
PnlCentro pnlCentro = new PnlCentro(); //<-- Problem likely lies here!
FileOutputStream fileOut = new FileOutputStream(fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(pnlCentro);
out.close();
}
您正在保存
PnlCentro PnlCentro=new PnlCentro()代码>-一个新实例-您确定正在更改默认值(数字为0)吗?new PnlCentro()
是否将vecBody
,life
设置为值=0?我认为当我添加一个新实例时,它会将所有值更改为原始值,但我不知道如何将其与新值一起保存。您正在保存PnlCentro PnlCentro=new PnlCentro()代码>-一个新实例-您确定正在更改默认值(数字为0)吗?new PnlCentro()
是否将vecBody
,life
设置为值=0?我想当我添加一个新实例时,它会将所有值都更改为原始值,但我不知道如何用新值保存它。@BryamUlloa我的回答有帮助吗?实际上它确实有帮助,问题是我需要创建该类的一个新实例,因为我在另一个类中处理save和load方法,但每当我创建类的实例时,所有变量都会重置。所以我只是在im序列化的类中创建了save和load方法。@BryamUlloa所以听起来我的答案是可以接受的?咳嗽暗示-hint@BryamUlloa我的回答有帮助吗?事实上确实有帮助,问题是我需要创建一个新的类实例,因为我在一个单独的类中处理save和load方法,但每当我创建一个类实例时,所有变量都会重置。所以我只是在im序列化的类中创建了save和load方法。@BryamUlloa所以听起来我的答案是可以接受的?咳嗽提示