Python 之 老王开枪(练习)

    xiaoxiao2023-11-07  156

    知识点:

     这篇博客是对前面Python基础的一个复习,更应该学到的是如何设计一系列的动作,或者说是设计程序

    1.分析有哪些类,并且创建:人 枪 弹夹 子弹 

    2.对象的创建

    3.各个类的属性设置

    4.类的方法设计,由里向外 ,1》人拿枪 eg :1弹夹装子弹  2 .枪装弹夹 3.人拿枪

                                                    2》人开枪 eg. 1.枪发射 2 弹夹弹出子弹 再将子弹返回给枪 子弹伤害人

     

    5.对象的创建可以放在循环中。

    class Person(object): """人类""" def __init__(self,name): super(Person, self).__init__() self.name = name self.qiang = None self.ph = 100 def an_zhuangzidan(self,danjia,zidan): danjia.baocun(zidan) def an_zhuangdanjia(self,qiang,danjia): qiang.baocun(danjia) def naqiang(self,qiang): self.qiang = qiang def __str__(self): if self.qiang == None: if self.ph>0: return "%s 没枪,血量为 %s ph"%(self.name,self.ph) else: return "%s 已经挂了.."%self.name else: return "%s 有枪,血量为 %s ph %s"%(self.name,self.ph,self.qiang) def kaiqiang(self,diren): zidan =self.qiang.sheji() if zidan: diren.diaoxue(zidan.weili) else: pass def diaoxue(self,weili): self.ph -= weili class Qiang(object): def __init__(self,name): super(Qiang, self).__init__() self.name = name self.danjia = None def baocun(self,danjia): self.danjia = danjia def sheji(self): return self.danjia.tanchuzidan() def __str__(self): if self.danjia == None: return "枪是:%s"%(self.name) else: return "枪是:%s,%s"%(self.name,self.danjia) class Zidan(object): def __init__(self,weili): super(Zidan, self).__init__() self.weili = weili class Danjia(): def __init__(self,max_size): super(Danjia, self).__init__() self.max_size = max_size self.zidan_list = [] def baocun(self,zidan): self.zidan_list.append(zidan) def __str__(self): return "弹夹%d/%d"%(len(self.zidan_list),self.max_size) def tanchuzidan(self): if self.zidan_list: return self.zidan_list.pop() else: return None def main(): #1创建老王 laowang = Person("laowang") #2创建敌人 diren = Person("diren") #3创建枪 ak47 = Qiang("ak47") danjia = Danjia(100) #4创建一些子弹 for i in range(15): zidan = Zidan(10) danjia.baocun(zidan) #5创建弹夹 #6老王装子弹2弹夹 laowang.an_zhuangzidan(danjia,zidan) #7老王装弹夹2枪 laowang.an_zhuangdanjia(ak47,danjia) #8老王拿开枪 laowang.naqiang(ak47) #9敌人创建 diren = Person("laosong") print(diren) #9老王打敌 print(danjia) print(ak47) print(laowang) for i in range(15): laowang.kaiqiang(diren) print(diren) if __name__ == "__main__": main()

     

    最新回复(0)