class Person(object):
'''创建Persion 类,并传入人名'''
def __init__(self,name):
self.name=name
self.gun="" #保存枪的引用
self.hp=100 # 保存血量
def __str__(self):
if self.gun:
return "%s的血量为%d,他的枪信息为:%s"%(self.name,self.hp,self.gun)
else:
return "%s的血量为%d,他还没有枪"%(self.name,self.hp)
def save_dan_jia(self,dan_jia_temp,zi_dan_temp): # 射手拿起子弹和弹夹,
dan_jia_temp.save_zi_dan(zi_dan_temp) # 弹夹要容纳子弹
def intert_dan_jia_into_gun(self,dan_jia_temp,gun_temp):
gun_temp.contain_dan_jia(dan_jia_temp)
def get_gun(self,gun):
self.gun=gun
class Gun(object):
'''创建Gun 类,并传入枪名'''
def __init__(self,name):
self.name=name
#self.dan_jia=dan_jia
def __str__(self):
if self.dan_jia:
return "%s弹夹的信息为:%s"%(self.name,self.dan_jia)
else:
return "%s弹夹为空,请创建弹夹对象弹夹的%"(self.name)
def contain_dan_jia(self,dan_jia_temp):
self.dan_jia=dan_jia_temp
class Clip(object):
'''创建弹夹 类,并传入能装多少子弹'''
def __init__(self,max_capacity):
self.max_capacity=max_capacity
self.saved_zi_dan=[] #保存装入子弹的引用
def __str__(self):
return "弹夹一共有%d/%d 子弹"%(len(self.saved_zi_dan),self.max_capacity)
def save_zi_dan(self,zi_dan_temp): # 两个对象无法实现包含关系,只能用引用指向关系
self.saved_zi_dan.append(zi_dan_temp) # 使用append方法 装入到引用list
class Bullet(object):
'''创建子弹类,并设置杀伤力'''
def __init__(self,execution):
self.execution=execution
def main():
#1.创建猎人对象 ,创建猎人对象要有 Person 类。
shooter=Person("Wujing")
#2.枪
k24=Gun("k24")
#3.拿枪是不能打敌人, 枪要有弹夹对象,
dan_jia=Clip(15)
#4.弹夹里要有子弹对象
#创建一些子弹用for循环
for i in range(15):
zi_dan=Bullet(5)
# 5.子弹放在弹夹
shooter.save_dan_jia(dan_jia,zi_dan) # 射手把子弹安装到弹夹中 实现这个方法
#6.弹夹放入枪内
shooter.intert_dan_jia_into_gun(dan_jia,k24)
# test ,弹夹 和 子弹
print(dan_jia)
print(k24)
#7.猎人拿枪
shooter.get_gun(k24)
print(shooter)
#8.猎人扣扳机射击
#9.弹夹弹出子弹
#10.怪物
if __name__=='__main__':
main()