class Ren:
def __init__(self):
self.xueliang=100
self.qiang=None
def __str__(self):
msg="当前血量为:{}".format(self.xueliang)
return msg
def anzidan(self,danjia,zidan):
danjia.baocunzidan(zidan)
def andanjia(self,qiang,danjia):
qiang.lianjiedanjia(danjia)
def naqiang(self,qiang):
if self.qiang:
print("手里已有枪")
else:
self.qiang=qiang
def kaiqiang(self,diren):
self.qiang.she(diren)
def diaoxue(self,weili):
self.xueliang-=weili
class Qiang:
def __init__(self):
self.danjia=None
def __str__(self):
if self.danjia:
msg="当前枪中有弹夹"
else:
msg="当前枪中没有弹夹"
return msg
def lianjiedanjia(self,danjia):
if self.danjia:
print("枪中已有弹夹!")
else:
self.danjia=danjia
def she(self,diren):
zidan=self.danjia.tanchuzidan()
if zidan:
zidan.shanghai(diren)
class Danjia:
def __init__(self,rongliang):
self.rongliang=rongliang
self.rongna=[]
def __str__(self):
msg="当前弹夹中有子弹:{}/{}".format(len(self.rongna),self.rongliang)
return msg
def baocunzidan(self,zidan):
if self.rongliang-len(self.rongna)>0:
self.rongna.append(zidan)
else:
print("弹夹已满!")
def tanchuzidan(self):
if len(self.rongna)>0:
zidan=self.rongna[-1]
self.rongna.pop()
return zidan
else:
print("目前弹夹中没有子弹")
class Zidan:
def __init__(self,weili):
self.weili=weili
def __str__(self):
msg="该子弹的威力为:{}".format(self.weili)
return msg
def shanghai(self,diren):
diren.diaoxue(self.weili)
laowang=Ren()
qiang=Qiang()
danjia=Danjia(20)
zidan=Zidan(5)
laowang.anzidan(danjia,zidan)
laowang.andanjia(qiang,danjia)
laowang.naqiang(qiang)
diren=Ren()
laowang.kaiqiang(diren)