day 6 老王开枪打人

Posted 不要被骄傲遮蔽了双眼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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__

以上是关于day 6 老王开枪打人的主要内容,如果未能解决你的问题,请参考以下文章

Python---老王开枪

python-老王开枪

老王开枪

老王开枪源码(Mr.Wang_shooting.py)

面向对象2

游戏逆向CS1.6无后坐力基址寻找