with open('h:\scores.txt', 'a') as f: f.write(f"{userr},{p2score}\n") f.write(f"{user},{p1score}\n")
我知道这段代码将在一个单独的文本文档中保存两个变量。它将保存用户和玩家1和2的分数。我遇到的麻烦是创建一个前五名的系统,其中前五名的分数也保存在同一个文件中。我还需要它,以便如果游戏再次运行,它将删除前两个保存,并保存两个新的。我的努力都没有实质性的效果。
ozxc1zmp1#
假设您已经有一个7行的score.txt文件,前2行是最后一场比赛的分数,后5行是排序的5个最佳分数,例如:
score.txt
Joe,1 Jane,2 Zia,67 Tao,55 Esteban,45 Mendoza,32 Cornelius,12
在某些情况下,您可能需要读取该文件:
with open('scores.txt') as f: p1, p2, *top5 = f.readlines() # removing the endlines from the scores top5 = [score.strip() for score in top5]
游戏结束后,您将获得新的分数,例如:
userr, user = 'player 2', 'player 1' p2score, p1score = 48, 20
您需要更新前5名;有许多方法可以做到这一点;您可以将新分数添加到top5列表中,按分数降序排序,然后保留前5个条目:
new_score1 = f"{user},{p1score}" new_score2 = f"{userr},{p2score}" top5 += [new_score1, new_score2] top5.sort(key = lambda s: -int(s.split(',')[-1])) top5 = top5[:5] print(top5) # ['Zia, 67', 'Tao, 55', 'player 2,48', 'Esteban, 45', 'Mendoza, 32']
最后,更新scores.txt:
scores.txt
with open('scores.txt', 'w') as f: f.write(f"{new_score2}\n") f.write(f"{new_score1}\n") for score in top5: f.write(f"{score}\n")
现在您所要做的就是将这些代码片段放在游戏代码中的相关位置。
1条答案
按热度按时间ozxc1zmp1#
假设您已经有一个7行的
score.txt
文件,前2行是最后一场比赛的分数,后5行是排序的5个最佳分数,例如:在某些情况下,您可能需要读取该文件:
游戏结束后,您将获得新的分数,例如:
您需要更新前5名;有许多方法可以做到这一点;您可以将新分数添加到top5列表中,按分数降序排序,然后保留前5个条目:
最后,更新
scores.txt
:现在您所要做的就是将这些代码片段放在游戏代码中的相关位置。