隔壁老王和老宋的战争

class Person(object):
    def __init__(self,name):
        super(Person, self).__init__()
        self.name = name
        self.gun = None  # 用来保存枪对象的引用
        self.hp = 100
        self.gun = None
    def anzhuang_zidan(self,dan_jia_temp,zi_dan_temp):
        dan_jia_temp.bao_cun_zidan(zi_dan_temp)
    def anzhuang_danjia(self,gun_temp,dan_jia_temp):
        gun_temp.baocun_danjia(dan_jia_temp)
    def na_qiang(self,gun_temp):
        self.gun = gun_temp
    def __str__(self):
        if self.gun:
            return "%s拿的枪为%s,当前血量为%d"%(self.name,self.gun,self.hp)
        else:
            if self.hp == 100:
                return "%s没有枪,当前血量为%d"%(self.name,self.hp)
            elif 0<self.hp<100:
                return "%s中弹了,当前血量为%d"%(self.name,self.hp)
            else:
                return "%s已经死亡"%(self.name)
    def kou_banji(self,diren):

        self.gun.kaihuo(diren)
    def diaoxue(self,sha_shang_li):
        self.hp -= sha_shang_li

class Gun(object):
    def __init__(self,name):
        super(Gun,self).__init__()
        self.name =name
        self.danjia = None

    def baocun_danjia(self,dan_jia_temp):
        self.danjia = dan_jia_temp
    def __str__(self):
       if self.danjia:
           return "%s,%s"%(self.name,self.danjia)
       else:
           return "%s,枪里面没有弹夹"%(self.name)
    def kaihuo(self,diren):
        zidan_temp = self.danjia.tanchu_zidan()
        if zidan_temp:
            return zidan_temp.dazhong(diren)
        else:
            return "枪里没有子弹。。。。"


class Danjia(object):
    def __init__(self,max_num):
        super(Danjia, self).__init__()
        self.max_num = max_num
        self.zidan_list = []
    def bao_cun_zidan(self,zidan_temp):
        self.zidan_list.append(zidan_temp)

    def __str__(self):

        return "弹夹信息:%d/%d"%(len(self.zidan_list),self.max_num)
    def tanchu_zidan(self):
        if self.zidan_list:
            return self.zidan_list.pop()
        else:
            return None
class Zidan(object):
    def __init__(self,sha_shang_li):
        super(Zidan, self).__init__()
        self.sha_shang_li = sha_shang_li
    def dazhong(self,diren):
        diren.diaoxue(self.sha_shang_li)



def main():
    laowang = Person("老王")
    diren_laosong = Person("老宋")
    ak47 = Gun("Ak47")

    dan_jia = Danjia(20)
    for i in range(30):
            zi_dan = Zidan(10)
            laowang.anzhuang_zidan(dan_jia,zi_dan)
    laowang.anzhuang_danjia(ak47,dan_jia)
    print(dan_jia)
    print(ak47)
    laowang.na_qiang(ak47)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
    laowang.kou_banji(diren_laosong)
    print(laowang)
    print(diren_laosong)
if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值