python基础之对象之间的交互

面对对象编程之对象之间的交互

这是一个猫狗大战的例子

# 猫类
class Cat:
    def __init__(self, name, hp, attack):
        self.name = name  # 名字
        self.hp = hp  # 血量
        self.attack = attack  # 攻击力

    # 猫的攻击:挠
    def catch(self, dog_obj):
        if dog_obj.hp == 0:
            print(f"{dog_obj.name}:ヾ(。`Д´。)血槽空了!")
            print(f"{self.name}:愚蠢的生物!")
            return True
        else:

            if dog_obj.hp >= self.attack:
                dog_obj.hp -= self.attack
                print(f"cat:{self.name}发动攻击,dog的血槽还剩:{dog_obj.hp}!")
                return False
            else:
                print(f"cat:{self.name}发动攻击,dog的血槽还剩:0!")
                print(f"{dog_obj.name}:ヾ(。`Д´。)血槽空了!")
                print(f"{self.name}:愚蠢的生物!")
                return True

# 狗类
class Dog:
    def __init__(self, name, hp, attack):
        self.name = name  # 名字
        self.hp = hp  # 血量
        self.attack = attack  # 攻击力

    # 狗的攻击:咬
    def bite(self, cat_obj):
        if cat_obj.hp == 0:
            print(f"{cat_obj.name}:ヾ(。`Д´。)血槽空了!")
            print(f"{self.name}:渺小的猫科动物!")
            return True
        else:
            if cat_obj.hp >= self.attack:
                cat_obj.hp -= self.attack
                print(f"dog:{self.name}发动攻击,cat的血槽还剩:{cat_obj.hp}!")
                return False
            else:
                print(f"dog:{self.name}发动攻击,cat的血槽还剩:0!")
                print(f"{cat_obj.name}:ヾ(。`Д´。)血槽空了!")
                print(f"{self.name}:渺小的猫科动物!")
                return True

# 创建一只加菲猫
cat_graf = Cat("garfield", 900, 350)
# 创建一只欧恩狗
dog_oen = Dog("oen", 900, 400)
print("明明是美好的一天,加菲又开始跟欧恩互殴了,让我们来看看谁赢了!")
while True:
    cat_res = cat_graf.catch(dog_oen)
    if cat_res:
        break
    dog_res = dog_oen.bite(cat_graf)
    if dog_res:
        break

你可能感兴趣的:(python基础之对象之间的交互)