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