python外星人游戏最高得分永久储存_Python——Pygame实现Alien Invasion之用pickle类保存最高分至本地...

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

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

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

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

445dbe1144a4a36adae4238ebe660633.png

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

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

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

afdc5932c5def71a9bbc750f8aaef2dc.png

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

0505fd3a4dfaca93754b922d62945474.png

cd3f4d3bfc780cc734d6a9affa6a39f1.png

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

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值