initial commit
This commit is contained in:
45
Python/OOP2/task4.py
Normal file
45
Python/OOP2/task4.py
Normal file
@ -0,0 +1,45 @@
|
||||
import random
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Self
|
||||
|
||||
|
||||
@dataclass
|
||||
class _Base:
|
||||
id: int
|
||||
level: int = 1
|
||||
|
||||
|
||||
@dataclass
|
||||
class Hero(_Base):
|
||||
soliders: list["Solider"] = field(default_factory=list)
|
||||
|
||||
def level_up(self: Self) -> Self:
|
||||
self.level += 1
|
||||
return self
|
||||
|
||||
|
||||
@dataclass
|
||||
class Solider(_Base):
|
||||
def follow(self: Self, hero: Hero) -> None:
|
||||
print(f"Иду за героем {hero.id}")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
amount_of_players = 2
|
||||
heroes = [Hero(i) for i in range(2)]
|
||||
for i in range(amount_of_players, amount_of_players * 3 + 1):
|
||||
solider = Solider(i)
|
||||
random.choice(heroes).soliders.append(solider)
|
||||
|
||||
amount_of_soliders = [len(hero.soliders) for hero in heroes]
|
||||
winner_id = amount_of_soliders.index(max(amount_of_soliders))
|
||||
winner = heroes[winner_id]
|
||||
loser_id = amount_of_soliders.index(max(amount_of_soliders))
|
||||
loser = heroes[loser_id]
|
||||
winner.level_up()
|
||||
print(winner)
|
||||
random.choice(loser.soliders).follow(winner)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user