58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
"""File for Score classes"""
|
|
|
|
from typing import Optional
|
|
import time
|
|
|
|
|
|
class Score:
|
|
"""Parent class for Scores. Stores common information for a Score."""
|
|
|
|
# no user setter, it should never change.
|
|
|
|
def __init__(self, user: str, score: Optional[int] = -1) -> None:
|
|
self._user: str = user
|
|
self._score: int = score
|
|
|
|
@property
|
|
def user(self) -> str:
|
|
"""Getter for user."""
|
|
return self._user
|
|
|
|
@property
|
|
def score(self) -> int:
|
|
"""Getter for score value."""
|
|
return self._score
|
|
|
|
@score.setter
|
|
def score(self, score: int) -> None:
|
|
"""Setter for score value."""
|
|
self._score = score
|
|
|
|
def get_str(self) -> str:
|
|
"""Gets score's value as a string."""
|
|
return str(self._score)
|
|
|
|
|
|
class ScoreTime(Score):
|
|
"""Class for a time based score."""
|
|
|
|
def __init__(self, user: str, score: Optional[float] = -1) -> None:
|
|
super().__init__(user)
|
|
# store time score as seconds.
|
|
self._score: float = score
|
|
|
|
@property
|
|
def score(self) -> float:
|
|
"""Getter for score value."""
|
|
return self._score
|
|
|
|
@score.setter
|
|
def score(self, score: float) -> None:
|
|
"""Setter for score value."""
|
|
self._score = score
|
|
|
|
def get_str(self) -> str:
|
|
"""Gets score's value as a string. Returns in time format."""
|
|
milliseconds = round((self.score - int(self.score)) * 10)
|
|
return time.strftime(f"%-M:%S.{milliseconds}", time.gmtime(self.score))
|