如何使用序列化来保存使用多个类的游戏状态?

时间:2018-04-08 21:16:10

标签: java serialization

对于我参与的项目,我的任务是编写一些代码以便能够保存并加载当前的游戏状态。现在,由于我正在使用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 对象?

0 个答案:

没有答案