2012-02-27 52 views
0

我在python 2.7.2中创建了一个游戏,但我碰到了一个障碍。我想通过让程序创建一个python脚本来保存游戏的状态,并在里面有一个模块 基本上说跳转到游戏中的这样和那样的模块。Python游戏 - 创建一个保存文件?

这是一个完全基于控制台的黑客游戏,基于真实的技术和程序。 而且它在Linux的环境设置;)

我发现这一点:

Python game save file

但一些代码位,我不知道如何使用,我不知道他们完全适合我的场景。

在此先感谢。

回答

0

就像Kimvais说的那样,使用泡菜模块是一个简单的选择。我用它来保存和加载配置文件数据,并保存和加载每个级别。这里有保存的收集等

def writeProfile(profileName, profileData): 
    """ pickle user profile data """ 

    os.chdir(PROFILE_DIR) 

    fileName = profileName + ".dat" 
    f = open(fileName, "wb") 
    pickle.dump(profileData, f) 
    f.close() 

    os.chdir("..") 

PROFILENAME玩家的个人资料,其中包括她的解锁水平,项目与地方的球员数据存储在.dat文件的名称的字符串函数的例子。 profileData是将覆盖旧数据并存储在.dat文件中的新数据(存储在诸如元组,列表和字典之类的python对象中)。 PROFILE_DIR是保存游戏数据应该存储的目录的路径。 os是一个python模块,它可以完成像导航目录和查找文件等任务。

+0

谢谢,我现在已经搬到了processing.org,但是我需要再次使用python(我可能会这么做),这将有助于:) – 2012-08-13 17:20:12

0

我假设你在游戏中有一些内部对象,例如“板子”或“玩家”或类似的,持有游戏状态。

如果你不需要跨平台的兼容性还是这样,存储Python对象的最简单的方法是通过pickle

如果你的游戏状态是字典,列表和这样的,需要一个更加平台无关的文件格式,你可以将它们存储在json

当然,这两种格式都非常容易反向工程和黑客攻击 - 所以你可以考虑某种形式的加密/ HMAC的 - 如果你船你的游戏源代码,当然然后总是有更简单的方法来破解你的游戏比修改savefiles。

+0

我在考虑让程序生成一个脚本,它告诉它导入主游戏模块,然后跳转到游戏中的这种模块(级别)。 - 我将如何去创造这个? – 2012-02-28 13:28:29

+0

_你为什么想这样做? – Kimvais 2012-02-28 13:30:51

+0

好吧,蟒蛇_doesn't永久存储变量_吗?我需要它跨平台。我将所有级别和数据存储在模块中,以便IMO,创建一个将脚本重定向到模块的python脚本会更容易。 – 2012-03-01 11:17:16