Python——Pygame实现Alien Invasion之用pickle类保存最高分至本地

        《Python编程:从入门到实践 2》 

        14-4 历史最高分 :每当玩家关闭并重新开始游戏《外星人入侵》时,最高分都将被重置。请修复这个问题,调用sys.exit() 前将最高分写入文件,并当 在GameStats 中初始化最高分时从文件中读取它。

        pickle是python进行序列化和反序列化的第三方库,引入pickle库可以实现游戏进度本地化保存。这里我们优化Alien_invasion游戏的最高分保存。

1. 在game_stats.py文件中引入pickle

Python——Pygame实现Alien Invasion之用pickle类保存最高分至本地_第1张图片

2.编写序列化和反序列化函数,由于pickle是序列化成二进制文件,读写文件需要用"wb","rb"进行对二进制的操作。并且在reset_stats函数中调用,每次游戏重启时读取最高分。

       dump函数序列化的内容必须是字符串,所以需要将想要序列化的对象保存为str,读取时还要还原为int类型。

       当第一次运行游戏时,你的文件可能还有最高分,即文件为空,所以要排查EOFError,否则读取空文件整个游戏都会强制报错退出。

Python——Pygame实现Alien Invasion之用pickle类保存最高分至本地_第2张图片

3.在感知键盘或鼠标相应事件里,感应到退出游戏之前,保存当前最高分。

Python——Pygame实现Alien Invasion之用pickle类保存最高分至本地_第3张图片

Python——Pygame实现Alien Invasion之用pickle类保存最高分至本地_第4张图片

           本地保存最高分就完成啦!运行如下:

 

你可能感兴趣的:(python,pygame,python,游戏)