46 lines
1.0 KiB
Python
46 lines
1.0 KiB
Python
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()
|