目录
什么是对象?什么是类?
对象就是变量
类时一系列对象相同的特征与技能的结合体
绑定方法的有什么特点
对象的绑定方法,是由对象来调用的,特殊之处就是把对象当做第一个参数传入该方法中
基于面向对象设计一个对战游戏
基础的枪械游戏:
class Saisi: def __init__(self,name,shooting1,life): #对象的所有特征 self.name = name self.shooting1 = shooting1 self.life = life #枪击的role方法 def shooting(self, role): if role.life <= 0: return True if self.life: #role掉血 role.life -= self.shooting1 print( f''' Saisi:[{self.name}]击中Role:[{role.name}] role掉血:[{self.shooting1}] role还剩血量:[{role.life}] ''') class Role: def __init__(self, name,shooting1, life): self.name = name self.shooting1 = shooting1 self.life = life #role枪击saisi方法 def shooting(self,saisi): if saisi.life <= 0: return True if self.life: # saisi掉血 saisi.life -= self.shooting1 print( f''' role:[{self.name}]击中saisi:[{saisi.name}] saisi掉血:[{self.shooting1}] saisi还剩血量:[{saisi.life}] ''' ) saisi1 = Saisi('qianlonger', 47, 100) role1=Role('tong', 50, 100) while True: flag1 = saisi1.shooting(role1) if flag1: break flag2 = role1.shooting(saisi1) if flag2: break
王者玩法
class Monkey: camp='Noxus' def __init__(self,nickname, Doeshurt=315, HP=625, money=16000, shield=2): self.nickname=nickname self.Doeshurt=Doeshurt self.HP=HP self.money=money self.shield=shield def attack(self,enemy): damage_value=self.Doeshurt-enemy.shield enemy.HP-=damage_value class Thyme: camp='Demacia' def __init__(self,nickname, Doeshurt=385, HP=500, money=17000, shield=1): self.nickname=nickname self.Doeshurt=Doeshurt self.HP=HP self.money=money self.shield=shield def attack(self,enemy): damage_value=self.Doeshurt-enemy.shield enemy.HP-=damage_value class BlackCleaver: def __init__(self,price=475,aggrev=9,HP=100): self.price=price self.aggrev=aggrev self.HP=HP def update(self,obj): obj.money-=self.price #换装备花钱 obj.Doeshurt+=self.aggrev #普攻增加 obj.HP+=self.HP #回血 def fire(self,obj): #火攻 obj.HP-=2000 #真伤2000 r1=Monkey('越兵线猴') g1=Thyme('视野百里') b1=BlackCleaver() print(r1.Doeshurt,r1.HP,r1.money) #r1的伤害,血量,护盾 if r1.money > b1.price: r1.b1=b1 b1.update(r1) print(r1.Doeshurt,r1.HP,r1.money) #r1的伤害,血量,护盾 print(g1.HP) r1.attack(g1) #普攻 print(g1.HP) r1.b1.fire(g1) #物理法穿装备伤害 print(g1.HP) #血量没有就黑屏