- 人类
- 属性
姓名 血量 持有的枪 - 方法
安子弹 安弹夹 拿枪(持有抢) 开枪
- 子弹类
- 属性
杀伤力 - 方法
伤害敌人(让敌人掉血)
- 弹夹类
- 属性
容量(子弹存储的最大值) 当前保存的子弹 - 方法
保存子弹(安装子弹的时候) 弹出子弹(开枪的时候)
- 枪类
- 属性
弹夹(默认没有弹夹,需要安装) - 方法
连接弹夹(保存弹夹) 射子弹
参考代码如下: V1.0 首次编写
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("老王")
#创建一个弹夹,有20发容量
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)
laowang.kaiqiang(diren)
print(diren)
运行结果如下图:
image.png
网友评论