zoukankan      html  css  js  c++  java
  • 组合 --代码

     #组合

      #一个类的对象作为另一个类对象的属性

    # 1,暴力摩托程序(完成下列需求):
    # 1.1
    # 创建三个游戏人物,分别是:
    # •    苍井井,女,18,攻击力ad为20,血量200
    # •    东尼木木,男,20,攻击力ad为30,血量150
    # •    波多多,女,19,攻击力ad为50,血量80
    # 1.2
    # 创建三个游戏武器,分别是:
    # •    平底锅,ad为20
    # •    斧子,ad为50
    # •    双节棍,ad为65
    #
    # 1.3
    # 创建三个游戏摩托车,分别是:
    #
    # •    小踏板,速度60迈
    # •    雅马哈,速度80迈
    # •    宝马,速度120迈。
    #
    # 完成下列需求(利用武器打人掉的血量为武器的ad + 人的ad):
    
    # (1)苍井井骑着小踏板开着60迈的车行驶在赛道上。
    # (2)东尼木木骑着宝马开着120迈的车行驶在赛道上。
    # (3)波多多骑着雅马哈开着80迈的车行驶在赛道上。
    
    
    # (4)苍井井赤手空拳打了波多多20滴血,波多多还剩xx血。
    # (5)东尼木木赤手空拳打了波多多30滴血,波多多还剩xx血。
    
    # (6)波多多利用平底锅打了苍井井一平底锅,苍井井还剩xx血。
    # (7)波多多利用斧子打了东尼木木一斧子,东尼木木还剩xx血。
    
    
    # (8)苍井井骑着宝马打了骑着小踏板的东尼木木一双节棍,东尼木木哭了,还剩xx血。
    # (9)波多多骑着小踏板打了骑着雅马哈的东尼木木一斧子,东尼木木哭了,还剩xx血。
    
    class GameRole:
        def __init__(self,name,sex,age,ad,hp):
            self.name = name
            self.sex = sex
            self.age = age
            self.ad = ad
            self.hp = hp
    
        def attack(self,p):
            p.hp = p.hp - self.ad
            print('%s赤手空拳打了%s%s滴血,%s还剩%s血' %(self.name,p.name,self.ad,p.name,p.hp))
    
    
        def add_moto(self,mo):
            self.mo = mo
    
        def add_weapon(self,wea):
            self.wea = wea
    
        def road_rush(self,p1):
            p1.hp = p1.hp - self.ad - self.wea.ad
            print('%s骑着%s打了骑着%s的%s一%s,%s哭了,还剩%s血' 
                  %(self.name,self.mo.name,p1.mo.name,p1.name,self.wea.name,p1.name,p1.hp))
    
    
    
    
    class Weapon:
        def __init__(self,name,ad):
            self.name = name
            self.ad = ad
    
        def fight(self,p1,p2):
            p2.hp = p2.hp - p1.ad - self.ad
            # print(' %s利用%s打了%s一%s,%s还剩%s血' %(p1.name,self.name,p2.name,self.name,p2.name,p2.hp))
            print('{0}利用{1}打了{2}一{1},{2}还剩{3}血'.format(p1.name,self.name,p2.name,p2.hp))
    
    
    class Moto:
        def __init__(self,name,speed):
            self.name = name
            self.speed = speed
    
        def drive(self,p1):
            print('%s骑着%s开着%d迈的车行驶在赛道上' % (p1.name,self.name,self.speed))
    
    p1 = GameRole('苍井井','',18,20,200)
    p2 = GameRole('东尼木木','',20,30,150)
    p3 = GameRole('波多多','',19,50,80)
    
    w1 = Weapon('平底锅',20)
    w2 = Weapon('斧子',50)
    w3 = Weapon('双节棍',65)
    
    m1 = Moto('小踏板',60)
    m2 = Moto('雅马哈',80)
    m3 = Moto('宝马',120)
    
    p1.add_moto(m1)  # 组合: 给p1 对象封装了一个属性,属性值 m1这个对象
    p1.mo.drive(p1)
    p1.attack(p3)
    
    # 波多多利用平底锅打了苍井井一平底锅,苍井井还剩xx血。
    p3.add_weapon(w1)  # 组合: 给p1 对象封装了一个属性,属性值 w1这个对象
    p3.wea.fight(p3,p1)
    
    # 苍井井骑着宝马打了骑着小踏板的东尼木木一双节棍,东尼木木哭了,还剩xx血。
    p1.add_moto(m3)
    p1.add_weapon(w3)
    p2.add_moto(m1)
    p1.road_rush(p2)

     

    # 2,定义一个类,计算圆的周长和面积。
    from math import pi
    
    class Circle:
    
        def __init__(self,r):
            self.r = r
    
        def area(self):
            return round(self.r ** 2 * pi,2)
    
        def perimeter(self):
            return round(self.r * 2 * pi,2)
    # c1 = Circle(5)
    # print(c1.area())
    # print(c1.perimeter())
    
    # 组合的思想
    class Ring:
    
        def __init__(self,r1,r2):
            self.r1 = Circle(r1)
            self.r2 = Circle(r2)
    
        def area(self):
            return self.r1.area() - self.r2.area()
    
        def perimeter(self):
            return self.r1.perimeter() + self.r2.perimeter()
    
    r1 = Ring(6,3)
    print(r1.area())
    print(r1.perimeter())

     

  • 相关阅读:
    C#调用Delphi的dll 详解
    C# 用API截取桌面屏幕
    C# 控件代码设置置顶和置底属性
    C#用API 获取电脑桌面背景图地址
    利用JS使IE浏览器默认打开是全屏显示
    aspx页面生成xml数据
    MacOS下安装Anaconda+Pycharm+TensorFlow+Keras
    GitHub编辑README
    Win10(64位)下安装Anaconda+Tensorflow(GPU)
    Win7(64位)下安装Anaconda+Tensorflow(CPU)
  • 原文地址:https://www.cnblogs.com/skydragon/p/11674320.html
Copyright © 2011-2022 走看看