class Controller: def __init__(self): self.player_repository = PlayerRepository() self.card_repository = CardRepository() @staticmethod def check_player_type(type_): if type_ == 'Beginner': return Beginner return Advanced @staticmethod def check_card_type(type_): if type_ == 'MagicCard': return MagicCard return TrapCard def add_player(self, type_: str, username: str): player = self.check_player_type(type_)(username) self.player_repository.add_player(player) return f"Successfully added player of type {type_} with username: {username}" def add_card(self, type_, name): card = self.check_card_type(type_)(name) self.card_repository.add_card(card) return f"Successfully added card of type {type_}Card with name: {name}" def add_player_card(self, username: str, card_name: str): player = self.player_repository.find_player(username) card = self.card_repository.find_card(card_name) player.card_repository.add_card(card) return f"Successfully added card: {card_name} to user: {username}" def fight(self, attack_name, enemy_name): attacker = self.player_repository.find_player(attack_name) enemy = self.player_repository.find_player(enemy_name) BattleField.fight(attacker, enemy) return f"Attack user health {attacker.health} - Enemy user health {enemy.health}" def report(self): result = '' for player in self.player_repository.players: result += f'Username: {player.username} - Health: {player.health} - Cards {player.card_repository.count}\n' for card in player.card_repository.cards: result += f'### Card: {card.name} - Damage: {card.damage_points}\n' return result # controller = Controller() # controller.add_player('Beginner', 'b') # controller.add_card('MagicCard', 'm') # controller.add_player_card('b', 'm') # print(controller.report()) # controller.add_player('Advanced', 'BogDan') # controller.add_card('TrapCard', 'Sila') # controller.add_player_card('BogDan', 'Sila') # print(controller.report()) # print(controller.fight('BogDan', 'b')) # print(controller.report())
class Controller: def __init__(self): self.player_repository = PlayerRepository() self.card_repository = CardRepository() @staticmethod def check_player_type(type): if type == Beginner: return Beginner else: return Advanced def add_player(self, type: str, username: str): p_type = self.check_player_type(type) player = p_type(username) self.player_repository.add_player(player) return f"Successfully added player of type {type} with username: {username}" @staticmethod def check_card_type(type): if type == MagicCard: return MagicCard else: return TrapCard def add_card(self, type: str, name: str): c_type = self.check_card_type(type) card = c_type(name) self.card_repository.cards.append(card) return "Successfully added card of type {type}Card with name: {name}" def find_player(self, name): for player in self.player_repository.players: if player.username == name: return player def find_card(self, name): for card in self.card_repository.cards: if card.name == name: return card def add_player_card(self, username: str, card_name: str): player = self.find_player(username) card = self.find_card(card_name) player.card_repository.cards.append(card) return "Successfully added card of type {type}Card with name: {name}" def fight(self, player_one, player_two): BattleField.fight(player_one, player_two) return f"Attack user health {player_one.health} - Enemy user health {player_two.health}"