我有一个我正在编程的游戏,最高分将被保存到一个文件中,它应该在最佳分数之后进行排序等。我已经编写了一个类和一种方法来节省分数,但不能弄清楚如何在彼此之后对它们进行排序,例如: 例如:
16
9
3
# Display the final score.
drawBoard(mainBoard)
scores = getScoreOfBoard(mainBoard)
答案 0 :(得分:0)
你需要将reverse = True传递给有序函数,如下所示:
return sorted(scores, reverse=True)
一个简单的解决方法是在将高分写入文件之前对其进行排序:
with open(self.HIGHSCORE_FILE, "w") as f:
f.write("\n".join(str(score) for score in sorted(highscores, reverse=True)))
但是,每次添加高分时,这都会对文件进行完全重写和排序。更好的方法是将每个分数简单地插入文件中的正确行。
答案 1 :(得分:0)
更改
def save_highscore(self, highscore):
highscores = set(self.get_highscores(False))
if highscore in highscores:
return
highscores.add(highscore)
with open(self.HIGHSCORE_FILE, "w") as f:
f.write(" ".join(str(score) for score in highscores))
到
def save_highscore(self, highscore):
highscores = set(self.get_highscores(False))
if highscore in highscores:
return
highscores.add(highscore)
with open(self.HIGHSCORE_FILE, "w") as f:
f.write("\n".join(str(score) for score in sorted(highscores, reverse=True)))