Read and write the high score file and show the stored high score

Refs #24
Refs #25
Refs #26
Task: MIL-004#2
Task: MIL-004#3
Task: MIL-004#4
This commit is contained in:
2026-10-13 14:38:51 +08:00
parent c20ea6c616
commit 4ef3874bb1
5 changed files with 251 additions and 7 deletions
+15 -5
View File
@@ -10,6 +10,7 @@ module first.
from turtle import Turtle
from snake_game.constants import (
HIGH_SCORE_FILE,
HIGH_SCORE_LABEL,
SCORE_LABEL,
SCOREBOARD_ALIGNMENT,
@@ -17,18 +18,25 @@ from snake_game.constants import (
SCOREBOARD_FONT,
SCOREBOARD_POSITION,
)
from snake_game.high_score_file import read_high_score, write_high_score
class Scoreboard(Turtle):
"""! @brief Shows the score as text at the top centre of the screen."""
def __init__(self) -> None:
"""! @brief Set the scoreboard up and write the score 0."""
def __init__(self, path: str = HIGH_SCORE_FILE) -> None:
"""! @brief Set the scoreboard up and write the score 0 and the stored best.
@param path The file that keeps the high score; defaults to
`HIGH_SCORE_FILE`.
"""
super().__init__()
## @brief The file that keeps the high score between games.
self.path = path
## @brief The number of foods the snake has eaten since the last reset.
self.score = 0
## @brief The largest score reached so far.
self.high_score = 0
## @brief The largest score reached so far, as stored in the file.
self.high_score = read_high_score(path)
self.color(SCOREBOARD_COLOR)
self.penup()
self.hideturtle()
@@ -53,9 +61,11 @@ class Scoreboard(Turtle):
"""! @brief Keep the best score, start a new game and write the scoreboard.
When the score is higher than the high score, it becomes the new high
score. The score then goes back to 0.
score and is written to the file; a lower or equal score does not write
the file. The score then goes back to 0.
"""
if self.score > self.high_score:
self.high_score = self.score
write_high_score(self.high_score, self.path)
self.score = 0
self.update_scoreboard()