Pro138-泡面Python[Py#038]——10min-猜数字存档补完

Python

新的需求已经出现

 现在我们的超级简单耐玩的猜数字小游戏现在已经可以保存成绩了,但是,F.word You 吉米你是不是玩了我的存档,怎么会有这么烂的成绩出现的。
 所以,我们来增加一个功能,就是存储多个玩家的成绩,那我们要怎么做呢?

  • 在游戏开始前,输入玩家自己的账号/名字。
  • 而我会根据这个名字记录他的成绩。这个功能所用到的内容我们几乎都说过,现在要把它们结合起来。

执行

 我们用一条简单的输入和一个变量用来装载当前玩家的名字/账号。

Player_name = input('愚蠢的人类啊~给我报上你的名字:')

 接下来,我们通过使用 readlines 把读取文件中的每行读出来

lines = f.readlines()

 再用一个字典来记录所有的成绩,使用 split 将里面的内容分割,还记得我们 #024 简单数据处理 的学习内容吗?利用一个for循环,将文本文件里面每行的内容,分割到字典里。

scores = {}
for l in lines:
   s = l.split()
   scores[s[0]] = s[1:]

 这个字典中,每一项的key是玩家的名字,value是一个由剩下的数据组成每个玩家的游玩数据。

 我们要读取当前当前玩家数据时,就要用到 #018 字典 里面的内容。字典类的get方法是按照给定key寻找对应项,如果不存在这样的key,就返回空值None。

score = scores.get(name)

 注意也要处理新玩家的数据哦所以如果没有找到该玩家的数据,说明他是一个新玩家,我们给他初始化一组成绩:

if score is None:
   score = [0, 0, 0]

 当游戏结束,我们不能直接把这次成绩存到文件里,那样就会覆盖掉别人的成绩。
 必须先把成绩更新到scores字典中,再统一写回文件中。把scores中的每一项按照“名字 游戏次数 最低轮数 总轮数\n”的格式拼成字符串,再全部放到result里,就得到了我们要保存的结果。

#   Save
scores[Player_name] = [str(Play_times), str(Total_rounds), str(Min_rounds)]
result = ''
for n in scores:
   line = n + ' ' + ' '.join(scores[n]) + '\n'
   result += line

f = open('..\GameSave\game-01.txt', 'w')
f.write(result)
f.close()

运行效果

改写效果
存档读档效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容