Python基础之面向对象思维解决游戏《天龙八部》

python

一、程序设计思维:

  以面向对象的思维设计《天龙八部》游戏技能,使得技能效果在增加或者减少时,游戏技能整体框架不改变,仅仅增加或者减少技能效果

  

二、思路流程图如下:

  

三、变成框架实现代码:

  

"""

天龙八部技能系统

设计原则:

"""

class ImpactEffect:

"""

影响效果

隔离技能释放器 与 具体的影响效果

"""

def impact(self):

# 要求子类必须实现,否则报错

raise NotImplementedError()

class LowerDefense(ImpactEffect):

"""

降低防御力

"""

def __init__(self,distance,ratio):

# 距离

self.distance = distance

# 比例

self.ratio = ratio

def impact(self):

print("降低%d米内,目标的防御力为%d."%(self.distance,self.ratio))

class LowerSpeed(ImpactEffect):

"""

降低速度

"""

def __init__(self, time, ratio):

# 时间

self.time = time

# 比例

self.ratio = ratio

def impact(self):

print("降速为%.1f.时间是:%d" % (self.ratio, self.time))

class Damage(ImpactEffect):

"""

伤害生命

"""

def __init__(self, value):

# 伤害值

self.value = value

def impact(self):

print("伤害%d生命" % (self.value))

class SkillDeployer:

"""

技能释放器

"""

def __init__(self,name):

self.name = name

# 配置释放器,存储当前技能具有的所有影响效果对象

self.__list_impact = self.__config_deployer()

def __config_deployer(self):

"""

配置释放器

:return:

"""

#*. 定义配置

#1. 读取相应的影响效果

#2. 创建影响效果对象

# 依赖注入

dict_skill_config = {

"韦陀杵":["LowerDefense(10,0.5)","Damage(30)"],

"降龙十八掌": ["LowerSpeed(5,0.2)", "Damage(80)"]

}

# ["LowerDefense(10,0.5)","Damage(30)"]

# 根据键(技能名称)获取值(影响效果列表)

list_impact_name = dict_skill_config[self.name]

# list_impact = []

# for item in list_impact_name:

# # 创建影响效果对象,并加入到列表中

# list_impact.append(eval(item))

return [eval(item) for item in list_impact_name]

def generate_skill(self):

"""

生成技能

:return:

"""

print(self.name,"释放啦!")

# 执行所有影响效果

for item in self.__list_impact:

# 编码期间:认为调用的是影响效果(父类ImpactEffect)

# 运行期间:由于创建的是子类对象(伤害生命Damage...),所以执行的是子类方法.

item.impact()

#--------测试---------------

# 创建技能对象

wei_tuo_chu = SkillDeployer("韦陀杵")

# 释放技能

wei_tuo_chu.generate_skill()

xiang_long_18_zhang = SkillDeployer("降龙十八掌")

xiang_long_18_zhang.generate_skill()

 

  

以上是 Python基础之面向对象思维解决游戏《天龙八部》 的全部内容, 来源链接: utcz.com/z/388046.html

回到顶部