《Python编程:从入门到实践 2》
14-4 历史最高分 :每当玩家关闭并重新开始游戏《外星人入侵》时,最高分都将被重置。请修复这个问题,调用sys.exit() 前将最高分写入文件,并当 在GameStats 中初始化最高分时从文件中读取它。
pickle是python进行序列化和反序列化的第三方库,引入pickle库可以实现游戏进度本地化保存。这里我们优化Alien_invasion游戏的最高分保存。
1. 在game_stats.py文件中引入pickle
2.编写序列化和反序列化函数,由于pickle是序列化成二进制文件,读写文件需要用"wb","rb"进行对二进制的操作。并且在reset_stats函数中调用,每次游戏重启时读取最高分。
dump函数序列化的内容必须是字符串,所以需要将想要序列化的对象保存为str,读取时还要还原为int类型。
当第一次运行游戏时,你的文件可能还有最高分,即文件为空,所以要排查EOFError,否则读取空文件整个游戏都会强制报错退出。
3.在感知键盘或鼠标相应事件里,感应到退出游戏之前,保存当前最高分。
本地保存最高分就完成啦!运行如下: