class People(object):
def __init__(self,name):
self.name = name
self.gun = None
self.hp = 100
def load_zidan(self,dianjia_temp,zidan_temp):#把子弹装进弹夹
dianjia_temp.anzhuangzidan(zidan_temp)
def load_danjia(self,gun_temp,danjia_temp):#把弹夹装进枪里
gun_temp.anzhuangdanjia(danjia_temp)
def take_gun(self,take_temp):
self.gun = take_temp
def __str__(self):
if self.gun:
return "%s有枪,%s"%(self.name,self.gun)
else:
if self.hp>0:
return "%s没有枪,血量为%d"%(self.name,self.hp)
else:
return "%s已挂,不要浪費子彈了"%self.name
def kai_qiang(self,baddly):
self.gun.fire(baddly)
def diaoxue(self,harm):
self.hp -= harm
class Gun(object):
def __init__(self,name):
self.name = name
self.danjia = None
def anzhuangdanjia(self,danjia_temp):
self.danjia = danjia_temp
def fire(self,baddly):
zidan_temp = self.danjia.tanchu_zidan()
if zidan_temp:
zidan_temp.dazhong(baddly)
else:
print("弹夹中没有子弹了。。。。")
def __str__(self):
if self.danjia:
return "枪的信息为:%s,%s"%(self.name,self.danjia)
else:
return "枪的信息为:%s,这把枪中没有弹夹" % (self.name)
class Danjia(object):
def __init__(self,max):
self.max = max
self.box = []#存储子弹
def anzhuangzidan(self,zidan_temp):
self.box.append(zidan_temp)
def tanchu_zidan(self):
if self.box:
return self.box.pop()
else:
return None#彈夾空了返回一個空值
def __str__(self):
return "弹夹装载%d/%d"%(len(self.box),self.max)
class Zidan(object):
def __init__(self,harm):
self.harm = harm
def dazhong(self,baddly):
baddly.diaoxue(self.harm)
def main():
laowang = People("laowang")
gun = Gun('Ak47')
laowang.take_gun(gun)
danjia = Danjia(20)
for i in range(5):
zidan = Zidan(10)
laowang.load_zidan(danjia, zidan)
laowang.load_danjia(gun,danjia)
print(laowang)
#print(gun)
#print(danjia)
laosong = People("laosong")
for j in range(3):
print(laosong)
laowang.kai_qiang(laosong)
print(laowang)
if __name__ == '__main__':
main()
运行结果:
laowang有枪,枪的信息为:Ak47,弹夹装载5/20
laosong没有枪,血量为100
laowang有枪,枪的信息为:Ak47,弹夹装载4/20
laosong没有枪,血量为90
laowang有枪,枪的信息为:Ak47,弹夹装载3/20
laosong没有枪,血量为80
laowang有枪,枪的信息为:Ak47,弹夹装载2/20