python 技能系统

 游戏里边肯定少不了技能系统,技能系统做的好后边会省下很多事情,不然会被策划折磨死。。。

sikll_file = {
             '降龙十八掌': ['DamageEffect(100)','DizzinessEffect(3)', 'LowerDeffence(30,3)'],
             '六脉神剑': ['DamageEffect(90)', 'Knockback(3)', 'LowerSpeed(30, 2)'],
             '北冥神功': ['DamageEffect(99)', 'LowerDeffence(20,2)', 'LowerSpeed(20,2)']
         }
 
class SkillImpactEffect:
    def impact(self):
        raise NotImplementedError()

class DamageEffect(SkillImpactEffect):
    """
        效果:伤害
    """
    def __init__(self,value):
        self.value = value
    def impact(self):
        print('减少血量%d点'%self.value)

class LowerDeffence(SkillImpactEffect):
    """
        效果:降低防御力
    """
    def __init__(self, value, time):
        self.value = value
        self.time = time
    def impact(self):
        print("降低%d防御力,持续%d秒"%(self.value, self.time))

class DizzinessEffect(SkillImpactEffect):
    """
    效果:眩晕
    """
    def __init__(self, time):
        self.time = time
    def impact(self):
        print('眩晕%d秒'% self.time)

class Knockback(SkillImpactEffect):
    """
        效果:震退
    """
    def __init__(self, value):
        self.value = value
    def impact(self):
        print('震退敌人到%d丈之外!')

class LowerSpeed(SkillImpactEffect):
    """
        效果:减速
    """
    def __init__(self, value, time):
        self.value = value
        self.time = time
    def impact(self):
        print('减速%d,持续时间%d' % (self.value, self.time))

class SkillDeployer:
    """
        技能释放器
    """
    def __init__(self,name):
        self.name = name
        # 加载配置文件{技能:[效果1,效果2.。。]}
        self.__dict_skill_config = self.load_config_file()
        # 创建效果对象
        self.__effect_object = self.create_effect_objects()
    def load_config_file(self):
        # 加载技能文件。
        return sikll_file

    def create_effect_objects(self):
        # 根据name创建相应的技能对象
        list_effect_name = self.__dict_skill_config[self.name]
        list_effect_object = []
        for item in list_effect_name:
            # 效果对象,加入技能列表
            effect_object = eval(item)
            list_effect_object.append(effect_object)
        return list_effect_object

    def generate_skill(self):
        print('#############:%s释放'%self.name)
        for item in self.__effect_object:
            item.impact()

xlsbz = SkillDeployer('降龙十八掌')
xlsbz.generate_skill()
lmsj = SkillDeployer('六脉神剑')
lmsj.generate_skill()
bmsg = SkillDeployer('北冥神功')
bmsg.generate_skill()

 

简单写写,没啥大的难度,主要就是继承的东西,还有一个就是eval

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值