美文网首页
python应用:老王开枪

python应用:老王开枪

作者: 暖熊熊 | 来源:发表于2017-09-23 23:52 被阅读0次
    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)<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

    相关文章

      网友评论

          本文标题:python应用:老王开枪

          本文链接:https://www.haomeiwen.com/subject/pemhextx.html