python基础练习之老王开枪

class People(object):
    def __init__(self,name):
        self.name = name
        self.gun = None
        self.hp = 100

    def load_zidan(self,dianjia_temp,zidan_temp):#把子弹装进弹夹
        dianjia_temp.anzhuangzidan(zidan_temp)

    def load_danjia(self,gun_temp,danjia_temp):#把弹夹装进枪里
        gun_temp.anzhuangdanjia(danjia_temp)

    def take_gun(self,take_temp):
        self.gun = take_temp

    def __str__(self):
        if self.gun:
            return "%s有枪,%s"%(self.name,self.gun)
        else:
            if self.hp>0:
                return "%s没有枪,血量为%d"%(self.name,self.hp)
            else:
                return "%s已挂,不要浪費子彈了"%self.name

    def kai_qiang(self,baddly):
        self.gun.fire(baddly)

    def diaoxue(self,harm):
        self.hp -= harm


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

    def anzhuangdanjia(self,danjia_temp):
        self.danjia = danjia_temp

    def fire(self,baddly):
        zidan_temp = self.danjia.tanchu_zidan()
        if zidan_temp:
            zidan_temp.dazhong(baddly)
        else:
            print("弹夹中没有子弹了。。。。")

    def __str__(self):
        if self.danjia:
            return "枪的信息为:%s,%s"%(self.name,self.danjia)
        else:
            return "枪的信息为:%s,这把枪中没有弹夹" % (self.name)

class Danjia(object):
    def __init__(self,max):
        self.max = max
        self.box = []#存储子弹
    def anzhuangzidan(self,zidan_temp):
        self.box.append(zidan_temp)
    def tanchu_zidan(self):
        if self.box:
            return self.box.pop()
        else:
            return None#彈夾空了返回一個空值
    def __str__(self):
        return "弹夹装载%d/%d"%(len(self.box),self.max)

class Zidan(object):
    def __init__(self,harm):
        self.harm = harm
    def dazhong(self,baddly):
        baddly.diaoxue(self.harm)

def main():
    laowang = People("laowang")
    gun = Gun('Ak47')
    laowang.take_gun(gun)
    danjia = Danjia(20)
    for i in range(5):
        zidan = Zidan(10)
        laowang.load_zidan(danjia, zidan)
    laowang.load_danjia(gun,danjia)
    print(laowang)
    #print(gun)
    #print(danjia)
    laosong = People("laosong")
    for j in range(3):
        print(laosong)
        laowang.kai_qiang(laosong)
        print(laowang)

if __name__ == '__main__':
    main()

运行结果:

laowang有枪,枪的信息为:Ak47,弹夹装载5/20
laosong没有枪,血量为100
laowang有枪,枪的信息为:Ak47,弹夹装载4/20
laosong没有枪,血量为90
laowang有枪,枪的信息为:Ak47,弹夹装载3/20
laosong没有枪,血量为80
laowang有枪,枪的信息为:Ak47,弹夹装载2/20
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值