您当前的位置: 首页 >  Python

47 python - 面向对象(老王开枪案例)

杨林伟 发布时间:2019-08-16 15:23:04 ,浏览量:1

在这里插入图片描述

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)  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            
关注
打赏
1688896170
查看更多评论
0.1037s