Python 面向对象 技能释放

这段代码定义了一个`SkillDeployer`类,用于加载和创建具有特定效果的技能。每个技能由一系列效果组成,如修改防御力、伤害生命等。`SkillImpactEffect`是所有效果的基类,`DamageEffect`和`LowerDeffenseEffect`是具体的效果实现。通过实例化`SkillDeployer`并调用`generate_skill`方法,可以模拟技能释放及其效果。
摘要由CSDN通过智能技术生成
class SkillDeployer:
    """
        技能释放器
    """

    def __init__(self, name):
        """
            技能名称
        :param name:
        """
        self.name = name
        self.dict_skill_config = self.__load_config_file()
        self.__effect_objects = self.__create_effect_objects()

    def __load_config_file(self):
        """
            读取技能文件
        :return:
        """
        return {
            # '狮吼功': ['修改防御力(30)', '嘲讽(8)', '修改攻击力(-80)'],
            # '迦叶功': ['修改防御力(30)', '眩晕(5)', '伤害生命(50)'],
            '鬼波功': ['LowerDeffenseEffect(30)', 'DamageEffect(50)'],
            '汽博': ['LowerDeffenseEffect(30)'],
        }

    def __create_effect_objects(self):
        """
            创建技能
        :return:
        """
        list_effect_name = self.dict_skill_config[self.name]
        list_effect_object = []
        for item in list_effect_name:
            list_effect_object.append(eval(item))
        return list_effect_object

    def generate_skill(self):
        print(self.name, '技能释放了')
        for item in self.__effect_objects:
            item.impact()


class SkillImpactEffect:
    def impact(self):
        """
            技能影响效果
        :return:
        """
        raise NotImplementedError()


class DamageEffect(SkillImpactEffect):
    """
        伤害生命效果
    """

    def __init__(self, value):
        self.value = value

    def impact(self):
        print('修改生命值%d' % self.value)


class LowerDeffenseEffect(SkillImpactEffect):
    """
        修改防御力
    """

    def __init__(self, value):
        self.value = value

    def impact(self):
        print('修改防御力%d' % self.value)


list01 = SkillDeployer('汽博')
list01.generate_skill()
list02 = SkillDeployer('鬼波功')
list02.generate_skill()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值