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