用Java序列化游戏?

用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

我正在尝试用Java序列化一个snake游戏,其中游戏必须有“保存”和“加载”选项。我没有收到任何错误,但每当我试图打印出生活时间等。当生活和时间不应该是0时,它只会给我0

以下是我保存和加载部分的一些代码:

  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所以听起来我的答案是可以接受的?咳嗽提示