Python 简单小程序 射击游戏_6_射手拿枪

class Person(object):
    '''创建Persion 类,并传入人名'''
    def __init__(self,name):
        self.name=name
        self.gun=""  #保存枪的引用
        self.hp=100  # 保存血量
    def __str__(self):
        if self.gun:
            return "%s的血量为%d,他的枪信息为:%s"%(self.name,self.hp,self.gun)
        else:
            return "%s的血量为%d,他还没有枪"%(self.name,self.hp)
    def save_dan_jia(self,dan_jia_temp,zi_dan_temp): # 射手拿起子弹和弹夹,
        dan_jia_temp.save_zi_dan(zi_dan_temp)   # 弹夹要容纳子弹
    def intert_dan_jia_into_gun(self,dan_jia_temp,gun_temp):
        gun_temp.contain_dan_jia(dan_jia_temp)
    def get_gun(self,gun):
        self.gun=gun
class Gun(object):
    '''创建Gun 类,并传入枪名'''
    def __init__(self,name):
        self.name=name
        #self.dan_jia=dan_jia
    def __str__(self):
        if self.dan_jia:
            return "%s弹夹的信息为:%s"%(self.name,self.dan_jia)
        else:
            return  "%s弹夹为空,请创建弹夹对象弹夹的%"(self.name)
    def contain_dan_jia(self,dan_jia_temp):
        self.dan_jia=dan_jia_temp
class Clip(object):
    '''创建弹夹 类,并传入能装多少子弹'''
    def __init__(self,max_capacity):
        self.max_capacity=max_capacity
        self.saved_zi_dan=[]   #保存装入子弹的引用
    def __str__(self):
        return  "弹夹一共有%d/%d 子弹"%(len(self.saved_zi_dan),self.max_capacity)
    def save_zi_dan(self,zi_dan_temp):   # 两个对象无法实现包含关系,只能用引用指向关系
        self.saved_zi_dan.append(zi_dan_temp) # 使用append方法 装入到引用list
class Bullet(object):
    '''创建子弹类,并设置杀伤力'''
    def __init__(self,execution):
        self.execution=execution





def main():

    #1.创建猎人对象 ,创建猎人对象要有 Person 类。
    shooter=Person("Wujing")

    #2.枪
    k24=Gun("k24")

    #3.拿枪是不能打敌人, 枪要有弹夹对象,
    dan_jia=Clip(15)
    #4.弹夹里要有子弹对象
    #创建一些子弹用for循环
    for i in  range(15):
        zi_dan=Bullet(5)
        # 5.子弹放在弹夹
        shooter.save_dan_jia(dan_jia,zi_dan)  # 射手把子弹安装到弹夹中 实现这个方法


    #6.弹夹放入枪内
    shooter.intert_dan_jia_into_gun(dan_jia,k24)
    # test ,弹夹 和 子弹
    print(dan_jia)
    print(k24)
    #7.猎人拿枪
    shooter.get_gun(k24)
    print(shooter)
    #8.猎人扣扳机射击
    #9.弹夹弹出子弹
    #10.怪物












if __name__=='__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值