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(复活甲)
# 后羿.复活(兰陵王)
day8_对象的交互的更多相关文章
- 理解Java对象的交互:时钟显示程序
实现: 结构: 对象:时钟 - 对象:小时 - 对象:分钟 小时和分钟具有相同属性(值,上限),可以用一个类Display来定义这两个对象: 但是两者之间又具有联系( ...
- Python--day22--面向对象的交互
Python里面自带的类和对象: 类名的作用: 类里面的与属性相关的对象self的运用: 实例化:就是创建一个对象 调用方法,类名.方法名(对象名) 执行步骤: 简写:alex.walk()等价于Pe ...
- objectiv-c所有对象之间的交互是如何实现的?
在对象间交互中每个对象承担不同的角色,总的来说就是“数据发送者”和“数据接收者”两个角色.可以通过objective-c中给我们提供的手段来实现两者间的通讯.比如: “通知中心”NSNotificat ...
- python 全栈开发,Day18(对象之间的交互,类命名空间与对象,实例的命名空间,类的组合用法)
一.对象之间的交互 现在我们已经有一个人类了,通过给人类一些具体的属性我们就可以拿到一个实实在在的人.现在我们要再创建一个狗类,狗就不能打人了,只能咬人,所以我们给狗一个bite方法.有了狗类,我们还 ...
- Java进阶学习(2)之对象交互(上)
对象交互 对象交互 对象的识别 时钟小程序 把现实世界用对象去建模,去分解问题规模,最终抽象成对象和对象的模型 例如11:03的小程序,可以抽象成一个显示类,一个类生成两个对象去表示时钟 packag ...
- python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...
- LLBL Gen Pro 4.2 Lite 免费的对象关系映射开发框架与工具
LLBL Gen Pro是一款优秀的对象关系映射开发框架,自2003年发布以来,一直有广泛的客户群.LLBL Gen Pro有几个标志性的版本,2.5/2.6是一个很稳定的版本,公司的一些旧的项目仍然 ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
- 第十二章:window对象
第十一章介绍了window对象及其客户端javascript所扮演的核心角色:它是客户端javascript程序的全局对象.本章介绍window对象的属性和方法,这些属性定义了不同的API,但是只有一 ...
随机推荐
- Re-py交易
python在线反编译 https://tool.lu/pyc/ 获得源码 import base64 def encode(message): s = '' for i in message: x ...
- CSRF介绍
对于常规的Web攻击手段,如XSS.CRSF.SQL注入.(常规的不包括文件上传漏洞.DDoS攻击)等,防范措施相对来说比较容易,对症下药即可,比如XSS的防范需要转义掉输入的尖括号,防止CRSF攻击 ...
- matlab练习程序(计算图像旋转角度)
比如有图像1,将其旋转n度得到图像2,问如何比较两张图像得到旋转的度数n. 算法思路参考logpolar变换: 1.从图像中心位置向四周引出射线. 2.计算每根射线所打到图像上的像素累计和,得到极坐标 ...
- 一起学react (1) 10分钟 让你dva从入门到精通
前言 如果文章中有错误的地方的话 可以直接加我QQ:469373256 自己针对一些问题做的优化版本 目前刚启动 还不是很成熟 https://github.com/fangkyi03/fastkit ...
- DFS(四):剪枝策略
顾名思义,剪枝就是通过一些判断,剪掉搜索树上不必要的子树.在采用DFS算法搜索时,有时候我们会发现某个结点对应的子树的状态都不是我们要的结果,这时候我们没必要对这个分支进行搜索,砍掉这个子树,就是剪枝 ...
- vue中template的作用及使用
先来看一个需求:下图div用v-for做了列表循环,现在想要span也一起循环,应该怎么做? 有3种方法可以实现 ①:直接用v-for对span也循环一次(该方法虽然可以使用,但不要用这种方式,因为 ...
- go语言中map每次遍历的顺序不同-问题分析
WHAT? 发现下面这段代码,多次运行出的结果是不一样的 mapper := make(map[int]string) mapper[1] = "1" mapper[2] = &q ...
- mysql 5.7 创建用户报错ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value
如: INSERT INTO user (host, user, authentication_string, select_priv, insert_priv, update_priv) VALUE ...
- C#/WPF 仅启动一个进程实例
如何实现仅启动一个 WPF 进程实例,并在打开第二个时,自动唤起之前打开的进程. 1 代码入口 在 App.xaml.cs 文件中,重写 OnStartup 方法,并添加 Mutex 进程锁. /// ...
- Python-警告处理
python 下Warning的使用 起因是这样的,当我使用pymysql模块执行建表的sql语句时获,在控制台输出了红色的消息,但是程序并没有终止而是继续运行了 sql语句如下: CREATE TA ...