Knight_day16

  • 组合

    组合:给一个类的对象封装一个属性,这个属性是另一个类的对象。

    组合意义:让类的对象与另一个类的对象产生关系(类与类之间产生关系,除了组合,还有继承)

 

 

复制代码
class GameRole:
    def __init__(self, name, ad, hp):
        self.name = name
        self.ad = ad
        self.hp = hp

    def attack(self, role):
        role.hp = role.hp - self.ad
        print('%s攻击了%s,%s掉了%s血,还剩%s血' %
              (self.name, role.name, role.name, self.ad, role.hp))

    def equit_weapon(self, w):
        self.weapon = w


class Weapon:
    def __init__(self, name, ad):
        self.name = name
        self.ad = ad

    def fight(self, role1, role2):
        role2.hp = role2.hp - self.ad
        print('%s用%s攻击了%s,%s掉了%s血,还剩%s血' %
              (role1.name, self.name, role2.name, role2.name, self.ad, role2.hp))


p1 = GameRole('盖伦', 20, 500)
p2 = GameRole('剑豪', 100, 200)
# p1.attack(p2)
w1 = Weapon('大宝剑', 30)
w2 = Weapon('武士刀', 80)
# w2.fight(p2, p1)#这样不好,主体应该是人而不是武器
p1.equit_weapon(w1)
p2.equit_weapon(w2)
# print(p1.weapon)
# print(w1)
# p2.weapon.fight(p2, p1)
w1.fight(p1, p2)
p1.weapon.fight(p1, p2)
w2.fight(p2, p1)
p2.weapon.fight(p2, p1)
'''
盖伦用大宝剑攻击了剑豪,剑豪掉了30血,还剩170血
盖伦用大宝剑攻击了剑豪,剑豪掉了30血,还剩140血
剑豪用武士刀攻击了盖伦,盖伦掉了80血,还剩420血
剑豪用武士刀攻击了盖伦,盖伦掉了80血,还剩340血
'''
复制代码

 多个函数间进行选择,创建一个字典:

 

posted @   夜色无边  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示