diff options
Diffstat (limited to 'src/sliceitoff/hiscores/hiscores.py')
-rw-r--r-- | src/sliceitoff/hiscores/hiscores.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/sliceitoff/hiscores/hiscores.py b/src/sliceitoff/hiscores/hiscores.py index 2725931..1b3b87f 100644 --- a/src/sliceitoff/hiscores/hiscores.py +++ b/src/sliceitoff/hiscores/hiscores.py @@ -1,9 +1,12 @@ +""" hiscores.hiscores - high socres: loading, saving, converting to string""" import os MAX_HIGHSCORES = 20 class HiScores: + """ Keeps track of high scores """ def __init__(self): + """ On creation load high scores from config file """ self.table=[] self.config_filename = os.path.join( os.getenv('HOME'), @@ -12,7 +15,7 @@ class HiScores: if not os.path.isfile(self.config_filename): self.table=[(0,"") for _ in range(MAX_HIGHSCORES)] return - with open(self.config_filename, "r") as config_file: + with open(self.config_filename, "r", encoding="utf-8") as config_file: for line in config_file: option, value = line.split('=') if option == 'hiscore': @@ -20,30 +23,32 @@ class HiScores: self.add(int(score.strip()),name.strip()) if len(self.table)<MAX_HIGHSCORES: self.table+=[(0,"") for _ in range(MAX_HIGHSCORES-len(self.table))] - + def add(self, score, initials): + """ Add new high score and reranks top """ self.table.append( (score, initials) ) self.table.sort(reverse=True) self.table = self.table[:MAX_HIGHSCORES] - + def high_enough(self, score): + """ Score is enough to make high scores """ return self.table[-1][0] < score - + def __del__(self): + """ On object deletion save current high scores to config file """ oldlines=[] - if os.path.isfile(self.config_filename): - with open(self.config_filename, "r") as config_file: + with (open(self.config_filename, "r", encoding="utf-8") + as config_file): for line in config_file: option, _ = line.split('=') if option != 'hiscore': oldlines.append(line) - - with open(self.config_filename, 'w') as config_file: + with open(self.config_filename, 'w', encoding="utf-8") as config_file: config_file.writelines(oldlines) for score, name in self.table: config_file.write(f"hiscore={score}!{name}\n") - + def __str__(self): text = ( " " |