练习1:打电话
请使用面向对象思想描述下列情景:
小明使用手机打电话,还有可能使用座机....
class People:
def __init__(self,name):
self.name = name
def call_up(self,tool):
print(self.name,end="")
tool.call()
class Tools:
def __init__(self,way):
self.way = way
def call(self):
print(f"使用{self.way}通话")
zs = People("张三")
ls = People("李四")
phone = Tools("手机")
landline = Tools("座机")
zs.call_up(phone)
ls.call_up(landline)
练习2:游戏角色系统
玩家攻击敌人,敌人受伤(头顶爆字,减少血量),还有可能死亡(加分).
敌人攻击玩家,玩家受伤(碎屏,减少血量),还有可能死亡(充值).
体会:
攻击完全相同
受伤部分相同
死亡完全不同
要求:
增加了其他角色,敌人/玩家不变
class Role:
def __init__(self, hp=0, atk=0):
self.hp = hp
self.atk = atk
def attack(self, target):
print("发起攻击")
target.get_hurt(self.atk)
def get_hurt(self, other_atk):
self.hp -= other_atk
if self.hp <= 0:
self.death()
def death(self):
pass
class Player(Role):
def get_hurt(self, other_atk):
print("碎屏")
super().get_hurt(other_atk)
def death(self):
print("充值")
class Enemy(Role):
def get_hurt(self, other_atk):
print("头顶爆字")
super().get_hurt(other_atk)
def death(self):
print("加分")
# --------------测试--------------
p = Player(200, 50)
e = Enemy(100, 10)
p.attack(e)
e.attack(p)
p.attack(e)