【发布时间】:2011-09-01 20:37:42
【问题描述】:
我一直在为 Android 编写一个纸牌游戏,我正拼命想如何保存我的游戏状态。为了简要解释我的程序,我有一个用于显示我的卡片的 Sprite 类,它包含一个位图图像、一个位置点和一个边界矩形。我继承了这个类来创建一个卡片类,它有两个位图,根据卡片是面朝上还是向下切换,以及用于存储花色和等级的枚举。这些卡片对象放置在 CardStack 对象中,其中包含附加位置和卡片数组列表。游戏模型由各种 CardStacks 以及在堆叠之间移动卡片的规则组成。游戏运行良好。
现在我想弄清楚如何保存我的游戏状态。我想序列化我的整个游戏对象并将其保存到文件中。但是,有许多不可序列化的对象(位图、点、矩形、颜色等)。在 C# 中,我知道您可以使用 MemoryStream 并复制整个对象,但我在 Java 中找不到不需要所有内容都可序列化的类似方法。 Java中有类似的东西吗?有什么更好的方法可以构建我的游戏模型对象吗?任何建议将不胜感激。谢谢!
【问题讨论】:
-
您不需要保存位图和矩形等内容。保存堆栈的位置以及位置和其中卡片的枚举应该足以恢复状态并且还可以节省内存。
-
在不知道游戏是如何进行的情况下,我不知道您必须保存哪些信息。但是,如果我想象的方式是正确的,您是否只需将每张卡的值和套件存储在所有堆栈中即可重新创建游戏状态?如果您知道卡片套件和等级,则可以计算出位图和颜色。至于位置(点和矩形)让这些准确重要吗? IE。是否允许用户将卡片/堆栈移动到任何 x/y 位置?还是有允许的“插槽”?如果是后者,您只需要存储卡/堆栈应该在哪个插槽中。
标签: java android serialization clone