zoukankan      html  css  js  c++  java
  • day8_对象的交互

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2019/7/14 15:07
    # @Author  : 大坏男孩
    # @File    : day8_对象的交互.py
    # @Software: PyCharm
    # @license : Copyright(C), 未来集团有限公司
    # @Contact : 110@163.com
    
    # 创建一个英雄类,英雄具备名字、血量、攻击力、防御和金币特征,具备攻击
    # 实例化出两个英雄,让两个英雄互相攻击,血量会减少(攻击-防御=扣除的血量)
    # 当某一个英雄血量为0,判定死亡
    
    # 创建装备类,装备具备名字、血量、攻击、防御和价格,具备装备技能
    # 英雄可以购买装备,英雄属性更新,金币要减少,英雄可以使用装备技能
    # 英雄具备英雄技能,A英雄不能使用B英雄的技能
    
    class Equipment():
        def __init__(self,name,hp,gj,fy,price):
            self.name = name
            self.hp = hp
            self.gj = gj
            self.fy = fy
            self.price = price
            print("装备>>>{},血量为{},攻击力为{},防御力为{},价格为{}".format(self.name,self.hp,self.gj,self.fy,self.price))
        def 黑切(self,obj):
            """暗影战斧的装备技能函数"""
            if "暗影战斧" in self.zb_lis:
                切割 = 300
                obj.hp = obj.hp - (切割 - obj.fy)
                # self.zb_lis[self.zb_lis.index("暗影战斧")]  -->找列表zb_lis里面"暗影战斧"的索引,并调用索引
                print("{}发动了{}技能切割,{}受到技能攻击,血量减少{},当前血量为{}"
                      .format(self.name,self.zb_lis[self.zb_lis.index("暗影战斧")],obj.name,切割,obj.hp))
                if obj.hp <= 0:
                    obj.hp = 0
                    print("{}血量为0".format(obj.name))
                    self.复活(obj)
                    # print(obj.hp)
                    print("{}诈尸,原地复活!血量恢复为{}".format(obj.name,obj.hp))
            else:
                print("{}未购买{},不能使用技能".format(self.name,"暗影战斧"))
    
        def 复活(self,obj):
            """复活的函数"""
            if "复活甲" in obj.zb_lis:
                obj.hp = obj.hp + 500
    
    class Hero(Equipment):
        def __init__(self,name,hp,gj,fy,jb):
            self.name = name
            self.hp = hp
            self.gj = gj
            self.fy = fy
            self.jb = jb
            self.zb_lis = []
            print("峡谷最帅的人>>>{},血量为{},攻击力为{},防御力{},金币有{}"
                  .format(self.name,self.hp,self.gj,self.fy,self.jb))
    
        def pk(self,obj):
            """两个英雄PK,self:英雄1   obj:英雄2"""
            obj.hp = obj.hp - (self.gj - obj.fy)
            print("{}被{}攻击,血量减少为{}".format(obj.name,self.name,obj.hp))
            if obj.hp <= 0:
                print("{}死不瞑目".format(obj.name))
    
        def purchase_equipment(self,zb):
            """购买装备"""
            if self.jb >= zb.price:
                self.hp = self.hp + zb.hp
                self.gj = self.gj + zb.gj
                self.fy = self.fy + zb.fy
                self.jb = self.jb - zb.price
                self.zb_lis.append(zb.name)
                print("{}购买{}成功,属性已更新为{} {} {} {}".format(self.name,zb.name,self.hp,self.gj,self.fy,self.jb))
            else:
                print("金币不足,无法购买!!!")
    兰陵王 = Hero("兰陵王",500,200,38,4000)
    后羿 = Hero("后羿",500,70,30,3500)
    # # 兰陵王对后羿发起进攻
    # 兰陵王.pk(后羿)
    # 兰陵王.pk(后羿)
    # 兰陵王.pk(后羿)
    # # 后羿对兰陵王发起进攻
    # 后羿.pk(兰陵王)
    
    暗影战斧 = Equipment("暗影战斧",0,80,0,2000)
    兰陵王.purchase_equipment(暗影战斧)
    兰陵王.黑切(后羿)
    兰陵王.黑切(后羿)
    复活甲 = Equipment("复活甲",500,0,0,2000)
    后羿.purchase_equipment(复活甲)
    # 后羿.复活(兰陵王)
    

      

    一行代码一行诗
  • 相关阅读:
    开发中遇到的问题点
    ThreadLocal
    Java多线程10:join()方法
    Java多线程9:中断机制
    Java多线程8:wait()和notify()/notifyAll()
    Java多线程7:死锁
    Java多线程0:核心理论
    MySQL中and和or的优先级的问题
    Java多线程6:Synchronized锁代码块(this和任意对象)
    shiro英语
  • 原文地址:https://www.cnblogs.com/huainanhai/p/11185580.html
Copyright © 2011-2022 走看看