day 6 老王开枪打人

1.图示

    

2 程序

  1)版本1:框架的搭建

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象

    #2.创建1个枪对象

    #3.创建1个弹夹对象

    #4.创建子弹对象

    #5.创建一个敌人

    #6.alex把子弹安装到弹夹中

    #7.alex把弹夹安装到枪中

    #8.alex拿枪

    #9.alex拿枪打jack


if __name__ == "__main__":
    main()

  2)版本2:创建类对象

class Person(object):
    '''人的类'''
    def __init__(self,name):
        self.name = name

class Gun(object):
    '''一个枪的类'''
    def __init__(self,name):
        self.name = name   #用来记录枪的类型

class Gun_jia(object):
    '''弹夹的类'''
    def __init__(self,max_num):
        self.max = max_num   #用来记录弹夹的最大容量

class Gun_dan(object):
    '''子弹类'''
    def __init__(self,damage):
        self.damage = damage  #记录子弹的伤害

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象
    alex = Person("alex")

    #2.创建1个枪对象
    ak47 = Gun("AK47")

    #3.创建1个弹夹对象
    gun_jia = Gun_jia(20)  #20代表弹夹的容量

    #4.创建子弹对象
    gun_dan = Gun_dan(10)  #一个子弹掉10滴血


    #6.alex把子弹安装到弹夹中

    #7.alex把弹夹安装到枪中

    #8.alex拿枪

    #5.创建一个敌人

    #9.alex拿枪打jack


if __name__ == "__main__":
    main()

  

  3)版本3:安装子弹

class Person(object):
    '''人的类'''
    def __init__(self,name):
        self.name = name

    def install(self,gun_jia_temp,gun_dan_temp):
        '''把子弹安装到弹夹'''
        #弹夹.保存子弹(子弹)
        gun_jia_temp.save(gun_dan_temp)

class Gun(object):
    '''一个枪的类'''
    def __init__(self,name):
        self.name = name   #用来记录枪的类型

class Gun_jia(object):
    '''弹夹的类'''
    def __init__(self,max_num):
        self.max = max_num   #用来记录弹夹的最大容量
        self.list_dan = []  #用来记录所有子弹的引用

    def save(self,gun_dan_temp):
        '''把子弹保存到弹夹'''
        self.list_dan.append(gun_dan_temp)

class Gun_dan(object):
    '''子弹类'''
    def __init__(self,damage):
        self.damage = damage  #记录子弹的伤害

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象
    alex = Person("alex")

    #2.创建1个枪对象
    ak47 = Gun("AK47")

    #3.创建1个弹夹对象
    gun_jia = Gun_jia(20)  #20代表弹夹的容量

    #4.创建子弹对象
    gun_dan = Gun_dan(10)  #一个子弹掉10滴血

    #6.alex把子弹安装到弹夹中
    #alex.安装子弹到弹夹中(弹夹,子弹)
    alex.install(gun_jia,gun_dan)

    #7.alex把弹夹安装到枪中

    #8.alex拿枪

    #5.创建一个敌人

    #9.alex拿枪打jack


if __name__ == "__main__":
    main()

  

  4)安装弹夹

class Person(object):
    '''人的类'''
    def __init__(self,name):
        self.name = name

    def install(self,gun_jia_temp,gun_dan_temp):
        '''把子弹安装到弹夹'''
        #弹夹.保存子弹(子弹)
        gun_jia_temp.save(gun_dan_temp)

    def install2(self,gun_temp,gun_jia_temp):
        '''安装弹夹到枪'''
        #枪保存弹夹
        gun_temp.save2(gun_jia_temp)

class Gun(object):
    '''一个枪的类'''
    def __init__(self,name):
        self.name = name   #用来记录枪的类型
        self.gun_jia = None  #用来记录弹夹对象的引用

    def save2(self,gun_jia_temp):
        '''用一个属性来保存这个弹夹对象的引用'''
        self.gun_jia = gun_jia_temp

class Gun_jia(object):
    '''弹夹的类'''
    def __init__(self,max_num):
        self.max = max_num   #用来记录弹夹的最大容量
        self.list_dan = []  #用来记录所有子弹的引用

    def save(self,gun_dan_temp):
        '''把子弹保存到弹夹'''
        self.list_dan.append(gun_dan_temp)

class Gun_dan(object):
    '''子弹类'''
    def __init__(self,damage):
        self.damage = damage  #记录子弹的伤害

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象
    alex = Person("alex")

    #2.创建1个枪对象
    ak47 = Gun("AK47")

    #3.创建1个弹夹对象
    gun_jia = Gun_jia(20)  #20代表弹夹的容量

    #4.创建子弹对象
    gun_dan = Gun_dan(10)  #一个子弹掉10滴血

    #6.alex把子弹安装到弹夹中
    #alex.安装子弹到弹夹中(弹夹,子弹)
    alex.install(gun_jia,gun_dan)

    #7.alex把弹夹安装到枪中
    #alex.安装弹夹到枪(枪,弹夹)
    alex.install2(ak47,gun_jia)

    #8.alex拿枪

    #5.创建一个敌人

    #9.alex拿枪打jack


if __name__ == "__main__":
    main()

  5)测试弹夹,枪

class Person(object):
    '''人的类'''
    def __init__(self,name):
        self.name = name

    def install(self,gun_jia_temp,gun_dan_temp):
        '''把子弹安装到弹夹'''
        #弹夹.保存子弹(子弹)
        gun_jia_temp.save(gun_dan_temp)

    def install2(self,gun_temp,gun_jia_temp):
        '''安装弹夹到枪'''
        #枪保存弹夹
        gun_temp.save2(gun_jia_temp)

class Gun(object):
    '''一个枪的类'''
    def __init__(self,name):
        self.name = name   #用来记录枪的类型
        self.gun_jia = None  #用来记录弹夹对象的引用

    def save2(self,gun_jia_temp):
        '''用一个属性来保存这个弹夹对象的引用'''
        self.gun_jia = gun_jia_temp
    
    def __str__(self):
        if self.gun_jia:
            return "枪的信息为:%s,弹夹的信息为:%s"%(self.name,self.gun_jia)
        else:
            return "枪的信息为:%s,没有弹夹..."%(self.name)

class Gun_jia(object):
    '''弹夹的类'''
    def __init__(self,max_num):
        self.max = max_num   #用来记录弹夹的最大容量
        self.list_dan = []  #用来记录所有子弹的引用

    def save(self,gun_dan_temp):
        '''把子弹保存到弹夹'''
        self.list_dan.append(gun_dan_temp)

    def __str__(self):
        return "弹夹的信息为:%d/%d"%(len(self.list_dan),self.max)

class Gun_dan(object):
    '''子弹类'''
    def __init__(self,damage):
        self.damage = damage  #记录子弹的伤害

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象
    alex = Person("alex")

    #2.创建1个枪对象
    ak47 = Gun("AK47")

    #3.创建1个弹夹对象
    gun_jia = Gun_jia(20)  #20代表弹夹的容量

    #4.创建子弹对象
    for i in range(15):
        gun_dan = Gun_dan(10)  #一个子弹掉10滴血

        #6.alex把子弹安装到弹夹中
        #alex.安装子弹到弹夹中(弹夹,子弹)
        alex.install(gun_jia,gun_dan)

    #7.alex把弹夹安装到枪中
    #alex.安装弹夹到枪(枪,弹夹)
    alex.install2(ak47,gun_jia)

    #test1:测试弹夹的信息
    print(gun_jia)

    #test2:测试枪的信息
    print(ak47)

    #8.alex拿枪

    #5.创建一个敌人

    #9.alex拿枪打jack


if __name__ == "__main__":
    main()
弹夹的信息为:15/20
枪的信息为:AK47,弹夹的信息为:弹夹的信息为:15/20

   

  6)老王拿枪,并且测试

class Person(object):
    '''人的类'''
    def __init__(self,name):
        self.name = name
        self.gun = None  #用来保存枪对象的引用
        self.hp = 100

    def install(self,gun_jia_temp,gun_dan_temp):
        '''把子弹安装到弹夹'''
        #弹夹.保存子弹(子弹)
        gun_jia_temp.save(gun_dan_temp)

    def install2(self,gun_temp,gun_jia_temp):
        '''安装弹夹到枪'''
        #枪保存弹夹
        gun_temp.save2(gun_jia_temp)

    def catch(self,gun_temp):
        '''拿枪'''
        self.gun = gun_temp

    def __str__(self):
        if self.gun:
            return "%s的血量是:%d,他有枪,%s"%(self.name,self.hp,self.gun)
        else:
            return "%s的血量是%d,他没有枪.."%(self.name,self.hp)

class Gun(object):
    '''一个枪的类'''
    def __init__(self,name):
        self.name = name   #用来记录枪的类型
        self.gun_jia = None  #用来记录弹夹对象的引用

    def save2(self,gun_jia_temp):
        '''用一个属性来保存这个弹夹对象的引用'''
        self.gun_jia = gun_jia_temp
    
    def __str__(self):
        if self.gun_jia:
            return "枪的信息为:%s,弹夹的信息为:%s"%(self.name,self.gun_jia)
        else:
            return "枪的信息为:%s,没有弹夹..."%(self.name)

class Gun_jia(object):
    '''弹夹的类'''
    def __init__(self,max_num):
        self.max = max_num   #用来记录弹夹的最大容量
        self.list_dan = []  #用来记录所有子弹的引用

    def save(self,gun_dan_temp):
        '''把子弹保存到弹夹'''
        self.list_dan.append(gun_dan_temp)

    def __str__(self):
        return "弹夹的信息为:%d/%d"%(len(self.list_dan),self.max)

class Gun_dan(object):
    '''子弹类'''
    def __init__(self,damage):
        self.damage = damage  #记录子弹的伤害

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象
    alex = Person("alex")

    #2.创建1个枪对象
    ak47 = Gun("AK47")

    #3.创建1个弹夹对象
    gun_jia = Gun_jia(20)  #20代表弹夹的容量

    #4.创建子弹对象
    for i in range(15):
        gun_dan = Gun_dan(10)  #一个子弹掉10滴血

        #6.alex把子弹安装到弹夹中
        #alex.安装子弹到弹夹中(弹夹,子弹)
        alex.install(gun_jia,gun_dan)

    #7.alex把弹夹安装到枪中
    #alex.安装弹夹到枪(枪,弹夹)
    alex.install2(ak47,gun_jia)

    #test1:测试弹夹的信息
    print(gun_jia)

    #test2:测试枪的信息
    print(ak47)

    #8.alex拿枪
    #alex.拿枪(枪)
    alex.catch(ak47)

    #test3.测试老王对象
    print(alex)

    #5.创建一个敌人

    #9.alex拿枪打jack


if __name__ == "__main__":
    main()
弹夹的信息为:15/20
枪的信息为:AK47,弹夹的信息为:弹夹的信息为:15/20
alex的血量是:100,他有枪,枪的信息为:AK47,弹夹的信息为:弹夹的信息为:15/20

  7)创建敌人

class Person(object):
    '''人的类'''
    def __init__(self,name):
        self.name = name
        self.gun = None  #用来保存枪对象的引用
        self.hp = 100

    def install(self,gun_jia_temp,gun_dan_temp):
        '''把子弹安装到弹夹'''
        #弹夹.保存子弹(子弹)
        gun_jia_temp.save(gun_dan_temp)

    def install2(self,gun_temp,gun_jia_temp):
        '''安装弹夹到枪'''
        #枪保存弹夹
        gun_temp.save2(gun_jia_temp)

    def catch(self,gun_temp):
        '''拿枪'''
        self.gun = gun_temp

    def __str__(self):
        if self.gun:
            return "%s的血量是:%d,他有枪,%s"%(self.name,self.hp,self.gun)
        else:
            return "%s的血量是%d,他没有枪.."%(self.name,self.hp)

class Gun(object):
    '''一个枪的类'''
    def __init__(self,name):
        self.name = name   #用来记录枪的类型
        self.gun_jia = None  #用来记录弹夹对象的引用

    def save2(self,gun_jia_temp):
        '''用一个属性来保存这个弹夹对象的引用'''
        self.gun_jia = gun_jia_temp
    
    def __str__(self):
        if self.gun_jia:
            return "枪的信息为:%s,弹夹的信息为:%s"%(self.name,self.gun_jia)
        else:
            return "枪的信息为:%s,没有弹夹..."%(self.name)

class Gun_jia(object):
    '''弹夹的类'''
    def __init__(self,max_num):
        self.max = max_num   #用来记录弹夹的最大容量
        self.list_dan = []  #用来记录所有子弹的引用

    def save(self,gun_dan_temp):
        '''把子弹保存到弹夹'''
        self.list_dan.append(gun_dan_temp)

    def __str__(self):
        return "弹夹的信息为:%d/%d"%(len(self.list_dan),self.max)

class Gun_dan(object):
    '''子弹类'''
    def __init__(self,damage):
        self.damage = damage  #记录子弹的伤害

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象
    alex = Person("alex")

    #2.创建1个枪对象
    ak47 = Gun("AK47")

    #3.创建1个弹夹对象
    gun_jia = Gun_jia(20)  #20代表弹夹的容量

    #4.创建子弹对象
    for i in range(15):
        gun_dan = Gun_dan(10)  #一个子弹掉10滴血

        #6.alex把子弹安装到弹夹中
        #alex.安装子弹到弹夹中(弹夹,子弹)
        alex.install(gun_jia,gun_dan)

    #7.alex把弹夹安装到枪中
    #alex.安装弹夹到枪(枪,弹夹)
    alex.install2(ak47,gun_jia)

    #test1:测试弹夹的信息
    print(gun_jia)

    #test2:测试枪的信息
    print(ak47)

    #8.alex拿枪
    #alex.拿枪(枪)
    alex.catch(ak47)

    #test3.测试老王对象
    print(alex)

    #5.创建一个敌人
    jack = Person("jack")
    print(jack)

    #9.alex拿枪打jack


if __name__ == "__main__":
    main()
弹夹的信息为:15/20
枪的信息为:AK47,弹夹的信息为:弹夹的信息为:15/20
alex的血量是:100,他有枪,枪的信息为:AK47,弹夹的信息为:弹夹的信息为:15/20
jack的血量是100,他没有枪..

  

  8)alex开枪??? 难点

 #alex拿枪打jack     
 #老王.扣扳机(jack)

'''让枪发射子弹打敌人'''
#枪.开火(敌人)

'''枪从弹夹中获取1发子弹,然后让子弹击中敌人'''

'''子弹打中人,让敌人掉血'''

 '''根据杀伤力,掉相应的血量'''
class Person(object):
    '''人的类'''
    def __init__(self,name):
        self.name = name
        self.gun = None  #用来保存枪对象的引用
        self.hp = 100

    def install(self,gun_jia_temp,gun_dan_temp):
        '''把子弹安装到弹夹'''
        #弹夹.保存子弹(子弹)
        gun_jia_temp.save(gun_dan_temp)

    def install2(self,gun_temp,gun_jia_temp):
        '''安装弹夹到枪'''
        #枪保存弹夹
        gun_temp.save2(gun_jia_temp)

    def catch(self,gun_temp):
        '''拿枪'''
        self.gun = gun_temp

    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 pull(self,enemy):
        '''让枪发射子弹打敌人'''
        #枪.开火(敌人)
        self.gun.fire(enemy)
        
    def lose_blood(self,damage):
        '''根据杀伤力,掉相应的血量'''
        self.hp -= damage

class Gun(object):
    '''一个枪的类'''
    def __init__(self,name):
        self.name = name   #用来记录枪的类型
        self.gun_jia = None  #用来记录弹夹对象的引用

    def save2(self,gun_jia_temp):
        '''用一个属性来保存这个弹夹对象的引用'''
        self.gun_jia = gun_jia_temp
    
    def __str__(self):
        if self.gun_jia:
            return "枪的信息为:%s,弹夹的信息为:%s"%(self.name,self.gun_jia)
        else:
            return "枪的信息为:%s,没有弹夹..."%(self.name)

    def fire(self,enemy):
        '''枪从弹夹中获取1发子弹,然后让子弹击中敌人'''
        #先从弹夹去子弹
        #弹夹.弹出一发子弹
        dan =  self.gun_jia.pop()

        #让这个子弹去伤害敌人
        if dan:
            #子弹.打中(敌人)
            dan.hit(enemy)
        else:
            print("弹夹中没有子弹了")


class Gun_jia(object):
    '''弹夹的类'''
    def __init__(self,max_num):
        self.max = max_num   #用来记录弹夹的最大容量
        self.list_dan = []  #用来记录所有子弹的引用

    def save(self,gun_dan_temp):
        '''把子弹保存到弹夹'''
        self.list_dan.append(gun_dan_temp)

    def __str__(self):
        return "弹夹的信息为:%d/%d"%(len(self.list_dan),self.max)

    def pop(self):
        '''弹出最上面的1发子弹,给枪'''
        if self.list_dan:
            return self.list_dan.pop()
        else:
            return None


class Gun_dan(object):
    '''子弹类'''
    def __init__(self,damage):
        self.damage = damage  #记录子弹的伤害

    def hit(self,enemy):
        '''子弹打中人,让敌人掉血'''
        
        #敌人.掉血(一个子弹的伤害)
        enemy.lose_blood(self.damage)

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象
    alex = Person("alex")

    #2.创建1个枪对象
    ak47 = Gun("AK47")

    #3.创建1个弹夹对象
    gun_jia = Gun_jia(20)  #20代表弹夹的容量

    #4.创建子弹对象
    for i in range(15):
        gun_dan = Gun_dan(10)  #一个子弹掉10滴血

        #6.alex把子弹安装到弹夹中
        #alex.安装子弹到弹夹中(弹夹,子弹)
        alex.install(gun_jia,gun_dan)

    #7.alex把弹夹安装到枪中
    #alex.安装弹夹到枪(枪,弹夹)
    alex.install2(ak47,gun_jia)

    #test1:测试弹夹的信息
    print(gun_jia)

    #test2:测试枪的信息
    print(ak47)

    #8.alex拿枪
    #alex.拿枪(枪)
    alex.catch(ak47)

    #test3.测试老王对象
    print(alex)

    #5.创建一个敌人
    jack = Person("jack")
    print(jack)

    #9.alex拿枪打jack
    #老王.扣扳机(jack)
    alex.pull(jack)
    print(jack)
print(alex)
if __name__ == "__main__": main()
弹夹的信息为:15/20
枪的信息为:AK47,弹夹的信息为:弹夹的信息为:15/20
alex的血量是:100,他有枪,枪的信息为:AK47,弹夹的信息为:弹夹的信息为:15/20
jack的血量是100,他没有枪..
jack的血量是90,他没有枪..
alex的血量是:100,他有枪,枪的信息为:AK47,弹夹的信息为:弹夹的信息为:14/20

  10)没血了,就挂了

## 打了11枪了

jack的血量是-10,他没有枪..
class Person(object):
    '''人的类'''
    def __init__(self,name):
        self.name = name
        self.gun = None  #用来保存枪对象的引用
        self.hp = 100

    def install(self,gun_jia_temp,gun_dan_temp):
        '''把子弹安装到弹夹'''
        #弹夹.保存子弹(子弹)
        gun_jia_temp.save(gun_dan_temp)

    def install2(self,gun_temp,gun_jia_temp):
        '''安装弹夹到枪'''
        #枪保存弹夹
        gun_temp.save2(gun_jia_temp)

    def catch(self,gun_temp):
        '''拿枪'''
        self.gun = gun_temp

    def __str__(self):
        if self.hp < 0:
            return "%s他挂了..."%self.name
        else:
            if self.gun:
                return "%s的血量是:%d,他有枪,%s"%(self.name,self.hp,self.gun)
            else:
                return "%s的血量是%d,他没有枪.."%(self.name,self.hp)

    def pull(self,enemy):
        '''让枪发射子弹打敌人'''
        #枪.开火(敌人)
        self.gun.fire(enemy)
        
    def lose_blood(self,damage):
        '''根据杀伤力,掉相应的血量'''
        self.hp -= damage

class Gun(object):
    '''一个枪的类'''
    def __init__(self,name):
        self.name = name   #用来记录枪的类型
        self.gun_jia = None  #用来记录弹夹对象的引用

    def save2(self,gun_jia_temp):
        '''用一个属性来保存这个弹夹对象的引用'''
        self.gun_jia = gun_jia_temp
    
    def __str__(self):
        if self.gun_jia:
            return "枪的信息为:%s,弹夹的信息为:%s"%(self.name,self.gun_jia)
        else:
            return "枪的信息为:%s,没有弹夹..."%(self.name)

    def fire(self,enemy):
        '''枪从弹夹中获取1发子弹,然后让子弹击中敌人'''
        #先从弹夹去子弹
        #弹夹.弹出一发子弹
        dan =  self.gun_jia.pop()

        #让这个子弹去伤害敌人
        if dan:
            #子弹.打中(敌人)
            dan.hit(enemy)
        else:
            print("弹夹中没有子弹了")


class Gun_jia(object):
    '''弹夹的类'''
    def __init__(self,max_num):
        self.max = max_num   #用来记录弹夹的最大容量
        self.list_dan = []  #用来记录所有子弹的引用

    def save(self,gun_dan_temp):
        '''把子弹保存到弹夹'''
        self.list_dan.append(gun_dan_temp)

    def __str__(self):
        return "弹夹的信息为:%d/%d"%(len(self.list_dan),self.max)

    def pop(self):
        '''弹出最上面的1发子弹,给枪'''
        if self.list_dan:
            return self.list_dan.pop()
        else:
            return None


class Gun_dan(object):
    '''子弹类'''
    def __init__(self,damage):
        self.damage = damage  #记录子弹的伤害

    def hit(self,enemy):
        '''子弹打中人,让敌人掉血'''
        
        #敌人.掉血(一个子弹的伤害)
        enemy.lose_blood(self.damage)

def main():
    '''用来控制这个程序的流程'''
    pass

    #1.创建alex对象
    alex = Person("alex")

    #2.创建1个枪对象
    ak47 = Gun("AK47")

    #3.创建1个弹夹对象
    gun_jia = Gun_jia(20)  #20代表弹夹的容量

    #4.创建子弹对象
    for i in range(15):
        gun_dan = Gun_dan(10)  #一个子弹掉10滴血

        #6.alex把子弹安装到弹夹中
        #alex.安装子弹到弹夹中(弹夹,子弹)
        alex.install(gun_jia,gun_dan)

    #7.alex把弹夹安装到枪中
    #alex.安装弹夹到枪(枪,弹夹)
    alex.install2(ak47,gun_jia)

    #test1:测试弹夹的信息
    print(gun_jia)

    #test2:测试枪的信息
    print(ak47)

    #8.alex拿枪
    #alex.拿枪(枪)
    alex.catch(ak47)

    #test3.测试老王对象
    print(alex)

    #5.创建一个敌人
    jack = Person("jack")
    print(jack)

    #9.alex拿枪打jack
    #老王.扣扳机(jack)
    for i in range(12):
        alex.pull(jack)
        print(jack)
        print(alex)


if __name__ == "__main__":
    main()
alex的血量是:100,他有枪,枪的信息为:AK47,弹夹的信息为:弹夹的信息为:6/20
jack的血量是0,他没有枪..
alex的血量是:100,他有枪,枪的信息为:AK47,弹夹的信息为:弹夹的信息为:5/20
jack他挂了...
alex的血量是:100,他有枪,枪的信息为:AK47,弹夹的信息为:弹夹的信息为:4/20
jack他挂了...
alex的血量是:100,他有枪,枪的信息为:AK47,弹夹的信息为:弹夹的信息为:3/20
原文地址:https://www.cnblogs.com/venicid/p/7899730.html