#!/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(复活甲)
# 后羿.复活(兰陵王)

  

day8_对象的交互的更多相关文章

  1. 理解Java对象的交互:时钟显示程序

    实现: 结构: 对象:时钟  - 对象:小时                 - 对象:分钟 小时和分钟具有相同属性(值,上限),可以用一个类Display来定义这两个对象: 但是两者之间又具有联系( ...

  2. Python--day22--面向对象的交互

    Python里面自带的类和对象: 类名的作用: 类里面的与属性相关的对象self的运用: 实例化:就是创建一个对象 调用方法,类名.方法名(对象名) 执行步骤: 简写:alex.walk()等价于Pe ...

  3. objectiv-c所有对象之间的交互是如何实现的?

    在对象间交互中每个对象承担不同的角色,总的来说就是“数据发送者”和“数据接收者”两个角色.可以通过objective-c中给我们提供的手段来实现两者间的通讯.比如: “通知中心”NSNotificat ...

  4. python 全栈开发,Day18(对象之间的交互,类命名空间与对象,实例的命名空间,类的组合用法)

    一.对象之间的交互 现在我们已经有一个人类了,通过给人类一些具体的属性我们就可以拿到一个实实在在的人.现在我们要再创建一个狗类,狗就不能打人了,只能咬人,所以我们给狗一个bite方法.有了狗类,我们还 ...

  5. Java进阶学习(2)之对象交互(上)

    对象交互 对象交互 对象的识别 时钟小程序 把现实世界用对象去建模,去分解问题规模,最终抽象成对象和对象的模型 例如11:03的小程序,可以抽象成一个显示类,一个类生成两个对象去表示时钟 packag ...

  6. python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)

    python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...

  7. LLBL Gen Pro 4.2 Lite 免费的对象关系映射开发框架与工具

    LLBL Gen Pro是一款优秀的对象关系映射开发框架,自2003年发布以来,一直有广泛的客户群.LLBL Gen Pro有几个标志性的版本,2.5/2.6是一个很稳定的版本,公司的一些旧的项目仍然 ...

  8. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...

  9. 第十二章:window对象

    第十一章介绍了window对象及其客户端javascript所扮演的核心角色:它是客户端javascript程序的全局对象.本章介绍window对象的属性和方法,这些属性定义了不同的API,但是只有一 ...

随机推荐

  1. 手机号码生成器app有吗,怎么使用的呢?

    手机号码生成器app是有的,他有手机号码生成器安卓版,也有手机号码生成器苹果版的.很多人会误解他的功能以为是拿来生成号码来接验证码的,其实他不是拿来接短信的.它是用来给别人做营销找客沪的找客源的,接不 ...

  2. Mybatis的动态sql以及分页

    mybatis动态sql If.trim.foreach <select id="selectBooksIn" resultType="com.jt.model.B ...

  3. 使用sessionStorage获取值和设置值

    <body><button id="btn1">设置值</button><button id="btn2">获取 ...

  4. Linux系统中的截图功能(类似QQ、微信、Snipaste截图功能)

    作者亲笔测试Ubuntu16.04,18.04,deepin15.11桌面版本Linux内核系统. 安装: 1. 终端命令黑框 2. sudo apt-get install flameshot(体积 ...

  5. 04. Go 语言流程控制

    Go 语言流程控制 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go 语言的常用流程控制有 if 和 for,而 switch 和 ...

  6. 【PAT甲级】Public Bike Management 题解

    题目描述 There is a public bike service in Hangzhou City which provides great convenience to the tourist ...

  7. Windows许可证 即将过期

    最近打开电脑,系统总是自动弹出Windows许可证即将过期的弹窗,现在总结方法如下. 命令都是在运行窗口输入的打开方式:win+R组合键或者右键点击win10开始菜单,点击“运行”查看系统版本:win ...

  8. PHP 扩展与 ZEND 引擎的整合

    PHP 扩展是对 PHP 功能的一个补充,编写完 PHP 扩展以后, ZEND 引擎需要获取到 PHP 扩展的信息,比如 phpinfo() 函数是如何列出 PHP 扩展的信息,PHP 扩展中的函数如 ...

  9. Do Deep Nets Really Need to be Deep?

    url: https://arxiv.org/pdf/1312.6184.pdf year: NIPS2014 浅网络学习深网络的函数表示, 训练方法就是使用深网络的 logits(softmax i ...

  10. Python爬虫实践~BeautifulSoup+urllib+Flask实现静态网页的爬取

    爬取的网站类型: 论坛类网站类型 涉及主要的第三方模块: BeautifulSoup:解析.遍历页面 urllib:处理URL请求 Flask:简易的WEB框架 介绍: 本次主要使用urllib获取网 ...