我正在Pygame中开发一个游戏,包括一个玩家类和一个敌人类。每个类中都有多个变量。我试图找出如何使用Python的内置pickle
模块保存这些sprite的数据。我想过做类似的事情:
data_file = open_file("save.dat","wb")
for i in enemyList:
pickle.dump(i.health)
pickle.dump(i.rect.x)
pickle.dump(i.rect.y)
pickle.dump(i.image)
依此类推。如何保存数据并以与以前相同的状态检索数据?你知道吗
Tags:
回答
因为pickle是对象序列化,所以您应该能够转储整个对象。
wb
中的b
表示二进制。这是因为您不必知道对象是如何用二进制表示的,您可以这样转储它:当你把它装回去的时候,你就得到了整个物体。你知道吗
要打开它:
我以前没有用过pickle,但由于它都是二进制的,所以如果它是一个对象,您应该可以转储您的enemyList:
排除/包括附加状态
Pickle使用
__getstate__
和__setstate__
方法在读写Pickle序列化数据之前改变状态。如果希望省略非序列化数据,则必须重写这些方法。以下是帮助您执行此操作的文档:Pickle State
考虑
序列化(以及python pickle)被视为创建自己的文件格式的替代方法。通常情况下,我发现根据数据类型的不同更容易实现。如果您不能控制对象层次结构,有时您不想创建自己的继承对象来尝试控制所有数据。有时编写自己的文件格式更容易。你知道吗
相关问题 更多 >
编程相关推荐