zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    设计模式(5)>模板方法
    设计模式(2)>工厂方法模式
    分支限界>装载问题
    解决Oracle 11g在用EXP导出时,空表不能导出
    设计模式(7)>观察者模式
    算法>并行算法
    设计模式(15)>桥接模式
    设计模式(9)>迭代器模式
    设计模式(11)>建造者模式
    设计模式(17)>中介者模式
  • 原文地址:https://www.cnblogs.com/xiaodan1040/p/11932891.html
Copyright © 2011-2022 走看看