Python练习

class Person(object):
def __init__(self,name):
super(Person,self).__init__()
self.name = name#用来记录人的名字
self.gun = None#用来保存枪对象的引用
self.hp = 100
def anzhuang_zidan(self,danjia,zidan):
#弹夹保存子弹
danjia.save_zidan(zidan)
def anzhuang_danjia(self,gun,danjia):
#枪保存弹夹
gun.save_danjia(danjia)
def naqiang(self,gun):
self.gun = gun
def __str__(self):
if self.gun:
return "%s血量是:%d,他有枪 %s"%(self.name,self.hp,self.gun)
else:
if self.hp > 0:
return "%s血量是:%d,他没有枪"%(self.name,self.hp)
else:
return "%s已死亡。。。"%(self.name)
def kou_ban_ji(self,laozhao):
self.gun.fire(laozhao)
def diaoxue(self,shanghai):
self.hp -= shanghai

class Gun(object):
def __init__(self,name):
super(Gun,self).__init__()
self.name = name #用来记录枪的类型
self.danjia = None #用来记录弹夹对象的引用
def save_danjia(self,danjia):
#用一个属性保存这个弹夹对象的引用
self.danjia = danjia
def __str__(self):
if self.danjia:
return "枪的信息显示是:%s %s"%(self.name,self.danjia)
else:
return "枪的信息显示是:%s %s"%(self.name,self.danjia)
def fire(self,laozhao):
zidan_temp = self.danjia.tanzidan()
if zidan_temp:
zidan_temp.jizhong(laozhao)
else:
print("弹夹中没有子弹了。。。")

class Danjia(object):
def __init__(self,max_num):
super(Danjia,self).__init__()
self.max_num = max_num#用来记录弹夹最大容量
self.zidan_list = []#用来记录所有子弹的引用
def save_zidan(self,zidan):
self.zidan_list.append(zidan)
def __str__(self):
return "弹夹的信息显示是:%d/%d"%(len(self.zidan_list),self.max_num)
def tanzidan(self):
if self.zidan_list:
return self.zidan_list.pop()
else:
return None

class Zidan(object):
def __init__(self,shanghai):
super(Zidan,self).__init__()
self.shanghai = shanghai
def jizhong(self,laozhao):
laozhao.diaoxue(self.shanghai)

def main():
#创建一个人对象
shixia = Person("十夏")
#创建一个枪对象
m416 = Gun("M416步枪")
#创建一个弹夹对象
danjia = Danjia(40)
#创建一个子弹对象
for i in range(40):
zidan = Zidan(5)
#十夏将子弹安装到弹夹中
shixia.anzhuang_zidan(danjia,zidan)
#十夏将弹夹安装到枪中
shixia.anzhuang_danjia(m416,danjia)
#测试弹夹与枪的信息
# print(danjia)
# print(m416)
#十夏拿枪
shixia.naqiang(m416)
#测试十夏拿枪
print(shixia)
#创建一个敌人
laozhao = Person("老赵")
#测试老赵信息
# print(laozhao)
#十夏开枪打敌人
for i in range(20):
shixia.kou_ban_ji(laozhao)
print(laozhao)
print(shixia)

if __name__ == '__main__':
main()
posted @ 2020-05-21 15:23  醉ヅ清风  阅读(98)  评论(0)    收藏  举报