定义两个类(人,狗)实现人狗大战
(版本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)