-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
implement py-elves-and-dwarves #1349
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,17 @@ | ||
# write your code here | ||
from app.players.player import Player | ||
from app.players.elves.elf import Elf | ||
from app.players.dwarves.dwarf import Dwarf | ||
|
||
|
||
def calculate_team_total_rating(list_of_players: list[Player]) -> int: | ||
return sum(player.get_rating() for player in list_of_players) | ||
|
||
|
||
def elves_concert(list_of_elves: list[Elf]) -> None: | ||
for elf in list_of_elves: | ||
elf.play_elf_song() | ||
|
||
|
||
def feast_of_the_dwarves(list_of_dwarves: list[Dwarf]) -> None: | ||
for dwarf in list_of_dwarves: | ||
dwarf.eat_favourite_dish() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
from app.players.player import Player | ||
from abc import ABC | ||
|
||
|
||
class Dwarf(Player, ABC): | ||
def __init__(self, nickname: str, favourite_dish: str) -> None: | ||
super().__init__(nickname) | ||
self._favourite_dish = favourite_dish | ||
|
||
def eat_favourite_dish(self) -> None: | ||
print( | ||
f"{self.nickname} is eating {self._favourite_dish}" | ||
) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
from app.players.dwarves.dwarf import Dwarf | ||
|
||
|
||
class DwarfBlacksmith(Dwarf): | ||
def __init__( | ||
self, | ||
nickname: str, | ||
favourite_dish: str, | ||
skill_level: int | ||
) -> None: | ||
super().__init__(nickname, favourite_dish) | ||
self._skill_level = skill_level | ||
|
||
def player_info(self) -> str: | ||
return (f"Dwarf blacksmith {self.nickname}" | ||
f" with skill of the {self._skill_level} level") | ||
|
||
def get_rating(self) -> int: | ||
return self._skill_level |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
from app.players.dwarves.dwarf import Dwarf | ||
|
||
|
||
class DwarfWarrior(Dwarf): | ||
def __init__(self, | ||
nickname: str, | ||
favourite_dish: str, | ||
hummer_level: int | ||
) -> None: | ||
super().__init__(nickname, favourite_dish) | ||
self._hummer_level = hummer_level | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider renaming |
||
|
||
def player_info(self) -> str: | ||
return (f"Dwarf warrior {self.nickname}." | ||
f" {self.nickname} has a hummer of the" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The word 'hummer' should likely be 'hammer' in the string to accurately describe the warrior's equipment. |
||
f" {self._hummer_level} level") | ||
|
||
def get_rating(self) -> int: | ||
return self._hummer_level + 4 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
from app.players.elves.elf import Elf | ||
|
||
|
||
class Druid(Elf): | ||
def __init__(self, | ||
nickname: str, | ||
musical_instrument: str, | ||
favourite_spell: str | ||
) -> None: | ||
super().__init__(nickname, musical_instrument) | ||
self._favourite_spell = favourite_spell | ||
|
||
def player_info(self) -> str: | ||
return (f"Druid {self.nickname}." | ||
f" {self.nickname} has a favourite spell: " | ||
f"{self._favourite_spell}") | ||
|
||
def get_rating(self) -> int: | ||
return len(self._favourite_spell) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
from app.players.player import Player | ||
from abc import ABC | ||
|
||
|
||
class Elf(Player, ABC): | ||
def __init__(self, nickname: str, musical_instrument: str) -> None: | ||
super().__init__(nickname) | ||
self._musical_instrument = musical_instrument | ||
|
||
def play_elf_song(self) -> None: | ||
print( | ||
f"{self.nickname} is playing" | ||
f" a song on the {self._musical_instrument}" | ||
) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
from app.players.elves.elf import Elf | ||
|
||
|
||
class ElfRanger(Elf): | ||
def __init__(self, | ||
nickname: str, | ||
musical_instrument: str, | ||
bow_level: int | ||
) -> None: | ||
super().__init__(nickname, musical_instrument) | ||
self._bow_level = bow_level | ||
|
||
def player_info(self) -> str: | ||
return (f"Elf ranger {self.nickname}." | ||
f" {self.nickname} has bow of the {self._bow_level} level") | ||
|
||
def get_rating(self) -> int: | ||
return 3 * self._bow_level |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
from abc import abstractmethod, ABC | ||
|
||
|
||
class Player(ABC): | ||
def __init__(self, nickname: str) -> None: | ||
self.nickname = nickname | ||
|
||
@abstractmethod | ||
def get_rating(self) -> None: | ||
pass | ||
|
||
@abstractmethod | ||
def player_info(self) -> None: | ||
pass |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There seems to be a typo in the parameter name
hummer_level
. It should likely behammer_level
to accurately describe the attribute related to a warrior's hammer.