Python获取关卡设置

时间:2015-07-21 19:01:38

标签: python serialization pickle

我正在使用python制作基于文本的游戏,我在制作保存游戏功能时遇到了一些麻烦。我找到了这个页面; Python text game: how to make a save feature?并且我将这些功能放入其中,但我不确定如何让它达到玩家最后的水平。

示例:

# saving the file
with open('savefile.dat', 'wb') as f:
pickle.dump([player, level_state], f, protocol=2)

# loading the file
with open('savefile.dat', 'rb') as f:
player, level_state = pickle.load(f)

level_state变量告诉代码玩家的等级,但我如何让它达到该等级?

对不起 - 我这是一个菜鸟。游戏以简短的介绍开始,然后要求新的或加载的游戏。

load = input('New game or load game?\n')
if load in ('new','new game'):
    print('You have started a new game.')
    time.sleep(2)
    print("Don't forget to save before you quit.")
    time.sleep(2)
    level1() #this starts the game from the beginning
elif load in ('load','load game'):
    loadname = input('What is your name?\n')
    with open('%s_game.dat' % loadname, 'rb') as f:
        name, level = pickle.load(f)

加载游戏后,我希望代码在文件中保存的级别上恢复。例如,执行level1()或level2()。

1 个答案:

答案 0 :(得分:0)

很难说出你需要什么,但是你能做的最通用的事情就是使用dill.dump_sessiondill.load_session来将你的整个python会话转储并加载到一个文件中,然后使用您拥有的所有对象重新启动它。基本上,无论何时完成(或启动?)一个级别,您都可以将整个会话保存到文件中...然后如果要在那里重新启动,只需使用`dill.load_session加载该文件。

Python 2.7.10 (default, May 25 2015, 13:16:30) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import dill
>>> 
>>> squared = lambda x:x**2
>>> import numpy
>>> x = numpy.arange(10)
>>> dill.dump_session('level1.pkl')
>>> 

然后,退出并重启......

Python 2.7.10 (default, May 25 2015, 13:16:30) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dill
>>> dill.load_session('level1.pkl')
>>> y = squared(x)
>>> y
array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])