124 lines
2.7 KiB
Python
124 lines
2.7 KiB
Python
"""File for Score classes"""
|
|
|
|
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, value: int) -> None:
|
|
"""
|
|
Default constructor for Score class.
|
|
|
|
Args:
|
|
user (str): Score's user
|
|
value (int): Score's value
|
|
"""
|
|
self._user: str = user
|
|
self._value: int = value
|
|
|
|
def __str__(self) -> str:
|
|
"""
|
|
Returns Score class as a string for printing.
|
|
|
|
Returns:
|
|
str: Score class as a string
|
|
"""
|
|
return self.to_str()
|
|
|
|
@property
|
|
def user(self) -> str:
|
|
"""
|
|
Getter for score user.
|
|
|
|
Returns:
|
|
str: user
|
|
"""
|
|
return self._user
|
|
|
|
@property
|
|
def value(self) -> int:
|
|
"""
|
|
Getter for score value.
|
|
|
|
Returns:
|
|
int: value
|
|
"""
|
|
return self._value
|
|
|
|
@value.setter
|
|
def value(self, value: int) -> None:
|
|
"""
|
|
Setter for score value.
|
|
|
|
Args:
|
|
value (int): score value input
|
|
"""
|
|
self._value = value
|
|
|
|
def get_str(self) -> str:
|
|
"""
|
|
Gets score's value as string.
|
|
|
|
Returns:
|
|
str: Score's value
|
|
"""
|
|
return str(self._value)
|
|
|
|
def to_str(self) -> str:
|
|
"""
|
|
Returns Score object as a string.
|
|
|
|
Returns:
|
|
str: string of json representation of Score
|
|
"""
|
|
return f"{self.user}: {self.get_str()}"
|
|
|
|
|
|
class ScoreTime(Score):
|
|
"""Class for a time based score. Inherits from Score."""
|
|
|
|
def __init__(self, user: str, score: float) -> None: # pylint: disable=super-init-not-called
|
|
"""
|
|
Default constructor for ScoreTime class.
|
|
|
|
Args:
|
|
user (str): Score's user
|
|
score (float): Score's value
|
|
"""
|
|
# store time score as seconds.
|
|
self._user: str = user
|
|
self._score: float = score
|
|
|
|
@property
|
|
def value(self) -> float:
|
|
"""
|
|
Getter for score value.
|
|
|
|
Returns:
|
|
float: value
|
|
"""
|
|
return self._score
|
|
|
|
@value.setter
|
|
def value(self, value: float) -> None:
|
|
"""
|
|
Setter for score value.
|
|
|
|
Args:
|
|
value (float): value
|
|
"""
|
|
self._score = value
|
|
|
|
def get_str(self) -> str:
|
|
"""
|
|
Gets score's value as string. Turns seconds into MM:SS.ms format.
|
|
|
|
Returns:
|
|
str: value in time format.
|
|
"""
|
|
milliseconds = round((self.value - int(self.value)) * 10)
|
|
return time.strftime(f"%-M:%S.{milliseconds}", time.gmtime(self.value))
|