博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础之面向对象思维解决游戏《天龙八部》
阅读量:4582 次
发布时间:2019-06-09

本文共 2330 字,大约阅读时间需要 7 分钟。

一、程序设计思维:

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

  

二、思路流程图如下:

  

三、变成框架实现代码:

  

"""    天龙八部技能系统    设计原则:"""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()

 

  

转载于:https://www.cnblogs.com/yuxiangyang/p/10731465.html

你可能感兴趣的文章
第七章学习小结
查看>>
GS LiveMgr心跳管理类
查看>>
设计模式学习笔记(二)之观察者模式、装饰者模式
查看>>
mysql导出数据库和恢复数据库代码
查看>>
走出软件泥潭 第一回 雪上加霜
查看>>
小鸟哥哥博客 For SAE
查看>>
gui编程实践(3)--记事本界面 JMenuBar JMenu
查看>>
App测试方法总结
查看>>
51nod-1228: 序列求和
查看>>
BZOJ1303: [CQOI2009]中位数图
查看>>
2015上海马拉松线上跑感悟-人生如同一场马拉松
查看>>
北航软院2013级C#期末考试部分考题解答
查看>>
CentOS 系统中安装 ArcGIS Server10.1 一些问题及解决
查看>>
asp.net里登陆记住密码
查看>>
【BZOJ】2190 [SDOI2008]仪仗队(欧拉函数)
查看>>
线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)
查看>>
简单DP【p2758】编辑距离
查看>>
Spring Data JPA:关联映射操作
查看>>
JWT入门简介
查看>>
结对编程——吐槽必应词典
查看>>