• 人狗大战


    定义两个类(人,狗)实现人狗大战

    (版本1)

    class Dog:
        def __init__(self,name,hp,ad,kind):  # 初始化方法  设置狗的参数:名字,血量,攻击,种类
            self.name = name   # 实例变量   对象属性
            self.hp = hp
            self.ad = ad
            self.type = kind
    
        def bite(self, person):     # 定义 狗咬人 的方法
            person.hp -= self.ad    # 人的血量减去狗的攻击就是人新的血量
            print('%s咬了%s,%s掉了%s点血' % (self.name, person.name, person.name, self.ad))
    
    class Person:
        def __init__(self,name,hp,ad,sex):  # 初始化方法    设置人的参数:名字,血量,攻击,性别
            self.name = name        # 实例变量   对象属性
            self.hp = hp
            self.ad = ad
            self.sex = sex
    
        def fight(self,dog):  # 动态变量  方法   人打狗
            # 狗掉血,就是人的攻击力
            dog.hp -= self.ad
            print('%s攻击了%s,%s掉了%s点血'%(self.name,dog.name,dog.name,self.ad))
    
    hei = Dog('小黑',300,20,'哈士奇')   # 小黑 对象 实例
    alex = Person('alex',100,10,'male')  # alex 对象 实例
    
    print(hei.hp)    # 300
    print(alex.hp)   # 100
    
    hei.bite(alex)   # 小黑咬了alex,alex掉了20点血
    alex.fight(hei)  # alex攻击了小黑,小黑掉了10点血
    
    print(hei.hp)    # 290
    print(alex.hp)   # 80

    (版本2)增加了武器类,添加了人购买和装备武器的方法,添加了武器作用方法  【使用了类的组合】

    class Person:
        def __init__(self,name,hp,ad,sex):
            self.name = name
            self.hp = hp
            self.ad = ad
            self.sex = sex
            self.money = 2000.8      #给人一个金额
            self.beg = []               #给人一个空背包
    
        def fight(self,dog):
            dog.hp -= self.ad
            print('%s打了%s,%s掉了%s点血'%(self.name,dog.name,dog.name,self.ad))
    
        def buy_weapon(self,weapon):               #添加了买武器的方法
            if weapon.price <= self.money:         #判断武器价格是否小于人所有的金额
                self.money -= weapon.price         #求得余额
                self.money = round(self.money,2)   #余额四舍五入,保留两位小数
                self.beg.append(weapon)            #背包中加入购买的武器
                print('购买%s成功,您当前的余额:%s'%(weapon.name,self.money))
            else:
                print('您的余额不足,请充值之后重试')
    
        def use_weapon(self):             #添加了使用武器的方法
            for weap in self.beg:         #将武器从背包中拿出
                if weap.t == 'weapon':    #判断背包中拿出的是不是武器
                    self.weapon = weap    # 组合
                    self.hp += weap.hp    #人的血量获得武器加成
                    self.ad += weap.ad    #人的攻击获得武器加成
                    break
    
    class Dog:
        def  __init__(self,name,hp,ad,kind):
            self.name = name
            self.hp = hp
            self.ad = ad
            self.kind = kind
    
        def bite(self,person):
            person.hp -= self.ad
            print('%s咬了%s,%s掉了%s点血'%(self.name,person.name,person.name,self.ad))
    
    class Weapon:     #新定义了一个武器类
        t = 'weapon'  #静态变量
        def __init__(self,name,price,ad,hp):
            self.name = name
            self.price = price
            self.ad = ad
            self.hp = hp
    
        def throw(self,dog,person):    #在武器类中添加使用武器的方法
            dog.hp -= self.ad
            print('%s被%s扔中了,掉了%s点血,当前%s的血量为%s'%(dog.name,person.name,self.ad,dog.name,dog.hp))
    
    alex = Person('alex',100,10,'male')   #传入人的参数
    hei = Dog('小黑',300,20,'藏獒')       #传入狗的参数
    zhuan = Weapon('板砖',2000,200,100)   #传入武器的参数
    alex.buy_weapon(zhuan)                #人 买    武器
    alex.use_weapon()                     #人 装备  武器
    print(alex.weapon.name)               #查看人装备的武器名称
    print(alex.__dict__)                  #查看人此时状态
    alex.weapon.throw(hei,alex)           #人对狗使用武器   

    (版本3)在版本1基础上进行了类的继承

    class Animal(object):       #父类  (含有人与狗共有的属性)
        def __init__(self,name,hp,ad):
            self.name = name
            self.hp = hp
            self.ad = ad
    class Dog(Animal):  #继承
        def __init__(self,name,hp,ad,kind):
            super().__init__(name,hp,ad)
            self.kind = kind    #狗的种类
    
        def bite(self,person):
            person.hp -= self.ad
            print('%s攻击了%s,%s掉了%s点血' % (self.name, person.name, person.name, self.ad))
    
    class Person(Animal):
        def __init__(self,name,hp,ad,sex):
            super().__init__(name,hp,ad)
            self.sex = sex  #人的性别
    
        def fight(self,dog):
            dog.hp -= self.ad
            print('%s攻击了%s,%s掉了%s点血'%(self.name,dog.name,dog.name,self.ad))
    
    hei = Dog('小黑',300,20,'哈士奇')
    alex = Person('alex',100,10,'male')
    alex.fight(hei)
    print(hei.hp)
    hei.bite(alex)
    print(alex.hp)
  • 相关阅读:
    Docker容器操作
    Docker的镜像操作
    CentOs安装Docker
    超长字符串
    编程之美-2.11 扩展 寻找距离最远的两个点
    编程之美-2.8 找到符合条件的整数
    编程之美-2.4 1的数目
    编程之美-1.16 24点游戏
    logistic回归 c++ 实现
    朴素贝页斯分类法 c++实现
  • 原文地址:https://www.cnblogs.com/Xiao_Xu/p/10608742.html
Copyright © 2020-2023  润新知