002day

    技术2025-12-18  13

    import random class Person(object): ''' 人类 ''' def __init__(self,name): self.name = name self.gun = None self.hp = 100 def anzhuang_zidan(self,dan_jia_temp,zi_dan_temp): '''把子弹装到弹夹中''' #弹夹.保存子弹(子弹) dan_jia_temp.baocun_zidan(zi_dan_temp) def anzhuang_danjia(self,gun_temp,dan_jia_temp): '''把弹夹安装到枪中''' gun_temp.baocun_danjia(dan_jia_temp) def naqiang(self,gun_temp): '''拿起一把枪''' self.gun = gun_temp def diao_xue(self,sha_shang_li): '''根据杀伤力调相应的血量''' self.hp-=sha_shang_li def __str__(self): if self.gun: return "%s的血量为%d,他有枪,%s" %(self.name,self.hp,self.gun) else: if self.hp>0: return "%s的血量为%d,他没枪" %(self.name,self.hp) else: return '%s已挂' %(self.name) def koubanji(self,diren): '''让枪发射子弹打敌人''' self.gun.fire(diren) class Gun(object): ''' 枪类 ''' def __init__(self,name): self.name = name #枪的类型 self.danjia = None#用来记录弹夹的引用 def baocun_danjia(self,dan_jia_temp): '''用一个属性保存弹夹的引用''' self.danjia = dan_jia_temp def __str__(self): if self.danjia: return "枪的信息为%s,%s" %(self.name,self.danjia) else: return "枪的信息为%s,这把枪中没有弹夹" %(self.name) def fire(self,diren): '''枪从弹夹中获取一颗子弹,然后让这发子弹去击中敌人''' zidan_temp = self.danjia.tanchu_zidan() if zidan_temp: zidan_temp.dazhong(diren) else: print('弹夹中没有子弹了......') class Danjia(object): def __init__(self,max_num): self.max_num = max_num#弹夹的最大容量 self.zidan_list = []#用来进行记录子弹 def baocun_zidan(self,zi_dan_temp): '''将这颗子弹保存''' self.zidan_list.append(zi_dan_temp) def __str__(self): return "弹夹的信息为:%d/%d" %(len(self.zidan_list),self.max_num) def tanchu_zidan(self): '''弹出最上面的那颗子弹''' if self.zidan_list: return self.zidan_list.pop() else: return None class Zidan(object): def __init__(self,sha_shang_li): self.sha_shang_li = sha_shang_li#子弹的威力 def dazhong(self,diren): '''让敌人掉血''' diren.diao_xue(self.sha_shang_li) def main(): '''用来控制整个程序流程''' #1.创建老王对象 laowang = Person('laowang') #2.创建一个枪对象 ak47 = Gun("AK47") #3.创建一个弹夹对象 dan_jia = Danjia(20) #4.创建一些子弹 for i in range(15): zi_dan = Zidan(random.randint(1,20)) #5.老王把子弹安装在弹夹中 #老王安装子弹导弹荚 laowang.anzhuang_zidan(dan_jia,zi_dan) #6.老王把弹架安装在枪中 laowang.anzhuang_danjia(ak47,dan_jia) # #test:测试弹夹的信息 # print(dan_jia) # #test:测试枪的信息 # print(ak47) #7.老王拿起枪 laowang.naqiang(ak47) #test:测试老王对象 # print(laowang) # 8.创建一个敌人 gebi_diren = Person('敌人') # print(gebi_diren) #9.老王开枪 # laowang.koubanji(gebi_diren) print(gebi_diren) opt_lst = ['查看老王信息', '查看敌人信息', '老王开枪打敌人','退出'] for index, opt in enumerate(opt_lst, 1): print(index, opt) while True: xuanze = input("请输入选项>>>") if xuanze == '1': print(laowang) elif xuanze == '2': print(gebi_diren) elif xuanze == '3': laowang.koubanji(gebi_diren) print(laowang) print(gebi_diren) elif xuanze == '4': break if __name__ == '__main__': main()
    Processed: 0.035, SQL: 9