gpt4 book ai didi

java - 用 Java 序列化游戏?

转载 作者:行者123 更新时间:2023-11-29 08:01:03 25 4
gpt4 key购买 nike

我试图用 Java 序列化一个贪吃蛇游戏,其中游戏必须有“保存”和“加载”选项。我没有收到任何错误,但每当我尝试打印出 lifestime 等时。它只会给我 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()LoadGame 方法工作得很好,它们只是不保存或加载当前游戏 session 中的任何数据。

  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() 方法中 pnlCentro 的初始化行。该对象是使用默认构造函数声明和实例化的。除非您已经覆盖默认构造函数以使用当前游戏数据实例化 pnlCentro 对象,否则当前游戏数据永远不会在写入磁盘之前设置。

考虑一下:

  public void SaveGame() throws IOException {

PnlCentro pnlCentro = new PnlCentro();

/* Set data prior to writing out */
pnlCentro.setLives(getThisGamesNumLives());
pnlCentro.setTime(getThisGamesTime());

FileOutputStream fileOut = new FileOutputStream(fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(pnlCentro);
out.close();
}

关于java - 用 Java 序列化游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14409003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com