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