我正在使用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()。
答案 0 :(得分:0)
很难说出你需要什么,但是你能做的最通用的事情就是使用dill.dump_session
和dill.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])