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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user