对于我参与的项目,我的任务是编写一些代码以便能够保存并加载当前的游戏状态。现在,由于我正在使用java,我已经知道序列化可能是最好的方法。现在,我必须保存的游戏状态涉及一个主要类,其中显示了单例模式:
public class Game implements java.io.Serializable
{
private static ArrayList<Room> world;
private static Game game = nul
private Game(){}
public static Game getGame()
{
if (game != null)
{
game = new Game();
}
return game;
}
在代码中稍微向下的是一堆用于帮助游戏运行的对象。
Position heroPos = new Position(HERO_ROOM_INDEX,
HERO_POS_X, HERO_POS_Y);
Rectangle heroHitbox = new Rectangle(
new Position(HERO_ROOM_INDEX,
HERO_HITBOX_X_OFFSET, HERO_HITBOX_Y_OFFSET),
HERO_HITBOX_WIDTH,
HERO_HITBOX_HEIGHT);
Entity hero = new Player(heroPos, heroHitbox, HERO_SYMBOL);
Position leverPos = new Position(getPlayerRoomIndex(), LEVER_POS_X,
LEVER_POS_Y);
(实际代码很长,难以阅读,但大致采用相同的格式)
其中实体,矩形,位置都是与 Game 不同的包中的独立类。所以,如果我尝试序列化这个 Game 对象,我该怎么做呢?我是否必须使用 ObjectOutputStream 将 Game 创建的每个对象写入文件?或者我只需要确保 Game 使用的所有类都实现 Serializable 接口,然后只序列化 Game 对象?