标签:返回 return 创建 bsp else 没有 one imp 修改
Player
类可以创建 警察对象 和 匪徒对象Gun
类创建的对象,玩家初始没有枪hurt
方法可以让 当前匪徒玩家 受到参数 police_man_gun
的伤害,具体流程如下:
damage
伤害度血量 <= 0
,提示 匪徒玩家挂了fire
方法可以向参数 bad_man
开火,具体流程如下:
shoot
方法,并传递 要射击的匪徒对象# 导入枪模块 import hm # 自定义玩家类 class Player(object): def __init__(self, name, hp=100): # 添加属性并赋值 # 名字 self.name = name # 血量 self.hp = hp # 枪属性 self.gun = None def __str__(self): return "名字:%s 血量:%d 枪:%s" % (self.name, self.hp, self.gun) # 描述土匪受伤的方法 def hurt(self, gun): # 重新计算土匪的血量 self.hp -= gun.damage # 判断土匪是击毙了 还是击中 if self.hp <= 0: print("%s[%d]被%s击毙啦" % (self.name, self.hp, gun.model)) else: print("%s[%d]被%s击中啦" % (self.name, self.hp, gun.model)) # 描述警察的想法 射击土匪 def fire(self, bad_man): # 判断警察是否有枪 if not self.gun: print("%s[%d]请佩戴枪..." % (self.name, self.hp)) return # 判断枪是否有子弹 如果没有子弹请自动添加子弹 if self.gun.bullet_count <= 0: self.gun.add_bullets(10) # 警察对象委托他的枪对象射击土匪 self.gun.shoot(bad_man) if __name__ == ‘__main__‘: # AK47 ak47 = hm.Gun("AK47", 50) # 创建警察对象 police_man = Player(‘警察‘) # 创建土匪对象 bad_man = Player("土匪", 70) # 警察打土匪 police_man.fire(bad_man) print("="*50) # 佩戴枪 police_man.gun = ak47 # 警察打土匪 police_man.fire(bad_man) # 再次开枪 police_man.fire(bad_man)
fire
方法,即可向 匪徒对象 射击,其他的细节,全部封装在类的内部shoot
方法中,只需要调用 hurt
方法,即可处理 玩家对象 被击中的细节例子:
# # 警察 # class PoliceMan(object): # # def __init__(self, name, hp=100): # # 添加属性并赋值 # # 名字 # self.name = name # # 血量 # self.hp = hp # # 枪属性 # self.gun = None # # def __str__(self): # return "名字:%s, 血量:%d, 枪:%s" % (self.name, self.hp, self.gun) # # # 向坏人开火 # def fire(self, bad_man): # pass # # # 匪徒 # class BadMan(object): # # def __init__(self, name, hp=100): # # 添加属性并赋值 # # 名字 # self.name = name # # 血量 # self.hp = hp # # 枪属性 # self.gun = None # # def __str__(self): # return "名字:%s, 血量:%d, 枪:%s" % (self.name, self.hp, self.gun) # # # 描述匪徒受伤 # def hurt(self, police_man_gun): # pass # 自定义枪类 class Gun(object): def __init__(self, model, damage): # 型号 self.model = model # 杀伤力 self.damage = damage # 子弹数量 self.bullet_count = 0 # 追踪属性值变化 def __str__(self): return "型号:%s, 杀伤力:%d, 子弹数量:%d" % (self.model, self.damage, self.bullet_count) # 填装子弹 def add_bullet(self, count): # 修改bullet_count属性值 self.bullet_count += count # 枪打敌人 def shoot(self, bad_man): # 判断是否有子弹 if self.bullet_count <= 0: print("请先填装子弹,再射击...") return # 如果有子弹 # 消耗一颗子弹 self.bullet_count -= 1 # 判断是否击中敌人 # 击中 if bad_man: # 让匪徒受伤 bad_man.hurt(self) print("%s发射了一颗子弹,子弹剩余%d颗" % (self.model, self.bullet_count)) # 优化 # 自定义玩家类 class Player(object): def __init__(self, name, hp=100): # 添加属性并赋值 # 名字 self.name = name # 血量 self.hp = hp # 枪属性 self.gun = None def __str__(self): return "名字:%s, 血量:%d, 枪:%s" % (self.name, self.hp, self.gun) # 向坏人开火 def fire(self, bad_man): # 判断是否有枪 if not self.gun: print("请佩戴枪...") return # 判断枪是否有子弹 if self.gun.bullet_count <= 0: # 自动填装子弹 self.gun.add_bullet(10) # 警察委托枪对象射击敌人 self.gun.shoot(bad_man) # 描述匪徒受伤 def hurt(self, police_man_gun): # 通过枪的杀伤力重新计算匪徒血量 self.hp -= police_man_gun.damage # 判断匪徒是被击毙还是击中 if self.hp <= 0: print("%s[%d]被%s击毙了" % (self.name, self.hp, police_man_gun.model)) else: print("%s[%d]被%s击中了" % (self.name, self.hp, police_man_gun.model)) # 创建一把枪 ak47 = Gun("AK47", 50) # 警察 police_man = Player("警察") # 土匪 bad_man = Player("匪徒", 70) # 警察想射击匪徒 police_man.fire(bad_man) # 给警察佩戴枪 police_man.gun = ak47 # 警察想射击匪徒 police_man.fire(bad_man) # 警察想射击匪徒 police_man.fire(bad_man)
标签:返回 return 创建 bsp else 没有 one imp 修改
原文地址:https://www.cnblogs.com/kangwenju/p/12878108.html