'''
·为帝国创建一支军队,包含骑兵、弓箭手、法师
·所有兵种都能够进攻和防守,但形态各异
·通过输入将令,控制每个兵种的攻守细节
'''

'''
多态:Soldier有多种子类形态
动态绑定:
    当进攻时,骑兵步兵弓箭手各自表现出不同的attack()方式,
    任意的一个Soldier的实例,能够动态地使用和自己逻辑关系最紧密的attack()方式
'''


class Soldier(object):
    def attack(self):
        print("士兵进攻")
        pass

    def defend(self):
        print("士兵防守")
        pass


class Calvary(Soldier):
    def attack(self):
        print("用劳资的铁蹄碾压你")

    def defend(self):
        print("骑兵防守")


class Archer(Soldier):
    def attack(self):
        print("我的三分剑,是地狱的火焰")

    def defend(self):
        print("弓箭手防守")


class Master(Soldier):
    def attack(self):
        print("天灵灵地灵灵云中飞来百万兵 ")

    def defend(self):
        print("法师防守")


if __name__ == '__main__':
    kingsArmy = []
    c = Calvary()
    a = Archer()
    m = Master()
    kingsArmy.append(c)
    kingsArmy.append(a)
    kingsArmy.append(m)

    cmd = input("将军请输入传您的将令:")
    if cmd == "99":
        for s in kingsArmy:
            s.attack()
    elif cmd == "00":
        for s in kingsArmy:
            s.defend()
    elif cmd == "11":
        for s in kingsArmy:
            # 判断s是否是Calvary类的实例
            if isinstance(s, Calvary):
                s.attack()
            else:
                s.defend()
    else:
        print("WHAT THE FUCK")

results matching ""

    No results matching ""