python应用:老王开枪

  1. 人类
  • 属性
    姓名 血量 持有的枪
  • 方法
    安子弹 安弹夹 拿枪(持有抢) 开枪
  1. 子弹类
  • 属性
    杀伤力
  • 方法
    伤害敌人(让敌人掉血)
  1. 弹夹类
  • 属性
    容量(子弹存储的最大值) 当前保存的子弹
  • 方法
    保存子弹(安装子弹的时候) 弹出子弹(开枪的时候)
  1. 枪类
  • 属性
    弹夹(默认没有弹夹,需要安装)
  • 方法
    连接弹夹(保存弹夹) 射子弹

参考代码如下: 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)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)

运行结果如下图:

python应用:老王开枪_第1张图片
image.png

你可能感兴趣的:(python应用:老王开枪)