基于面向对象设计一个对战小游戏

class Ruiwen:
   '''瑞文英雄的初始属性及普攻方法'''
   def __init__(self, nickname,
                gongjili = 54,
                shengmingzhi = 414,
                qian = 1000,
                hujia = 3):
      self.nickname = nickname
      self.gongjili = gongjili
      self.shengmingzhi = shengmingzhi
      self.qian = qian
      self.hujia = hujia

   def pugong(self, other):
      last_gongjili = self.gongjili - other.hujia # 自身攻击力减去对方英雄的护甲
      other.shengmingzi -= last_gongjili # 对方生命值减去自身已经减去护甲的攻击力,即是一下普攻造成的伤害

class Gailun:
   '''盖伦英雄的初始属性及普工方法'''
   def __init__(self, nickname,
                gongjili = 44,
                shengmingzhi = 614,
                qian = 500,
                hujia = 6):
      self.nickname = nickname
      self.gongjili = gongjili
      self.shengmingzhi = shengmingzhi
      self.qian = qian
      self.hujia = hujia

   def pugong(self, other1):
      last_gongjili = self.gongjili - other1.hujia # 同上
      other1.shengmingzhi -= last_gongjili # 同上

class Zhuangbei:
   '''一件装备的初始属性及主动技能和改变英雄数据属性方法'''
   def __init__(self,
                jiage=475,
                gongjili=9,
                shengmingzhi=100):
      self.jiage = jiage
      self.gongjili = gongjili
      self.shengmingzhi = shengmingzhi

   def update(self, obj):
      '''英雄对应的数据属性都要有增加,且金额需要扣减'''
      obj.qian -= self.jiage
      obj.gongjili += self.gongjili
      obj.shengmingzhi += self.shengmingzhi

   def fire(self, obj):
      '''主动技能,直接扣减生命值(无视护甲,可视为真实伤害)'''
      obj.shengmingzhi -= 1000

r1 = ruiwen('瑞文')
g1 = gailun('盖伦')
z1 = zhuangbei()

print(g1.qian, g1.gongjili, g1.shengmingzhi)

if g1.qian >= z1.jiage:
   g1.z1 = z1 # 此步骤只是一个赋值,后续调用主动技能方法
   z1.update(g1)

print(g1.qian, g1.gongjili, g1.shengmingzhi)

print(r1.shengmingzhi)
g1.pugong(r1) # 普通攻击
print(r1.shengmingzhi)
g1.z1.fire(r1) # 装备主动技能
if r1.shengmingzhi <= 0:
   print('%s已将%s击杀' % (g1.nickname, r1.nickname))
while True: print('studying...')
原文地址:https://www.cnblogs.com/xuewei95/p/14647864.html