1. 人类
属性
- 姓名
- 血量
- 持有的枪
方法
- 安子弹
- 安弹夹
- 拿枪(持有抢)
- 开枪
2. 子弹类
属性
- 杀伤力
方法
- 伤害敌人(让敌人掉血)
3. 弹夹类
属性
- 容量(子弹存储的最大值)
- 当前保存的子弹
方法
- 保存子弹(安装子弹的时候)
- 弹出子弹(开枪的时候)
4. 枪类
属性
- 弹夹(默认没有弹夹,需要安装)
方法
- 连接弹夹(保存弹夹)
- 射子弹
参考代码:
#人类 class Ren: def __init__(self,name): self.name = name self.xue = 100 self.qiang = None def __str__(self): return self.name + "剩余血量为:" + str(self.xue) def anzidan(self,danjia,zidan): danjia.baocunzidan(zidan) def andanjia(self,qiang,danjia): qiang.lianjiedanjia(danjia) def naqiang(self,qiang): self.qiang = qiang def kaiqiang(self,diren): self.qiang.she(diren) def diaoxue(self,shashangli): self.xue -= shashangli #弹夹类 class Danjia: def __init__(self, rongliang): self.rongliang = rongliang self.rongnaList = [] def __str__(self): return "弹夹当前的子弹数量为:" + str(len(self.rongnaList)) + "/" + str(self.rongliang) def baocunzidan(self,zidan): if len(self.rongnaList) < self.rongliang: self.rongnaList.append(zidan) def chuzidan(self): #判断当前弹夹中是否还有子弹 if len(self.rongnaList) > 0: #获取最后压入到单间中的子弹 zidan = self.rongnaList[-1] self.rongnaList.pop() return zidan else: return None #子弹类 class Zidan: def __init__(self,shashangli): self.shashangli = shashangli def shanghai(self,diren): diren.diaoxue(self.shashangli) #枪类 class Qiang: def __init__(self): self.danjia = None def __str__(self): if self.danjia: return "枪当前有弹夹" else: return "枪没有弹夹" def lianjiedanjia(self,danjia): if not self.danjia: self.danjia = danjia def she(self,diren): zidan = self.danjia.chuzidan() if zidan: zidan.shanghai(diren) else: print("没有子弹了,放了空枪....") #创建一个人对象 laowang = Ren("老王") #创建一个弹夹 danjia = Danjia(20) print(danjia) #循环的方式创建一颗子弹,然后让老王把这颗子弹压入到弹夹中 i=0 while i<5: zidan = Zidan(5) laowang.anzidan(danjia,zidan) i+=1 #测试一下,安装完子弹后,弹夹中的信息 print(danjia) #创建一个枪对象 qiang = Qiang() print(qiang) #让老王,把弹夹连接到枪中 laowang.andanjia(qiang,danjia) print(qiang) #创建一个敌人 diren = Ren("敌人") print(diren) #让老王拿起枪 laowang.naqiang(qiang) #老王开枪射敌人 laowang.kaiqiang(diren) print(diren) print(danjia) laowang.kaiqiang(diren) print(diren) print(danjia)