day19 作业
今日作业
1.什么是对象?什么是类?
对象:特征和技能的结合体
类:一系列对象 相同的特征和技能的结合体
2.绑定方法的有什么特点
对象调用类内部的函数 称之为绑定方法,特点:
- 不同的对象调用该绑定方法,则会将不同对象传入该绑定方法中
- 对象的绑定方法是由对象来调用的,特点就是把对象当做第一个参数(self)传进去
3.基于面向对象设计一个对战游戏
仿制英雄联盟英雄角色
属性 | 值 |
---|---|
name(名字) | 瑞文 |
money(余额) | 1000 |
damage(攻击力) | 54 |
hujia(护甲值) | 3 |
life(生命值) | 4104 |
attack | 攻击技能(方法) |
属性 | 值 |
---|---|
name(名字) | 盖伦 |
money(余额) | 1000 |
damage(攻击力) | 50 |
hujia(护甲值) | 10 |
life(生命值) | 5000 |
attack | 攻击(技能方法) |
属性 | 值 |
---|---|
price(价格) | 475 |
aggrev(攻击力) | 9 |
life(生命值) | 100 |
update_attack | 减钱、增加生命值、攻击力(技能方法) |
fire | 喷火,主动技能(技能方法) |
'''
需求:
瑞文类
盖伦类
装备类
瑞文购买装备,减钱、加攻击力
攻击盖伦英雄,掉血
'''
# 定义瑞文类
class Ruiwen:
def __init__(self,name,money=1000,damage=54,hujia=3,life=4104):
self.name = name
self.money = money
self.damage = damage
self.hujia = hujia
self.life = life
def attack(self,diren):
damage_value = self.damage - diren.hujia # 掉血量 = 攻击力-敌人的护甲
diren.life -= damage_value # 敌人的剩余血量
# 定义盖伦类
class Gailun:
def __init__(self,name,money=1000,damage=50,hujia=10,life=5000):
self.name = name
self.money = money
self.damage = damage
self.hujia = hujia
self.life = life
def attack(self,diren):
damage_value = self.damage - diren.hujia
diren.life -= damage_value
# 定义装备类
class ZhuangBei:
def __init__(self,price=475,aggrev=9,life=100):
self.price = price
self.aggrev = aggrev
self.life = life
self.damage = 1000 # 装备自身攻击力
def update_attack(self,obj):
obj.money -= self.price # 减钱
obj.damage += self.aggrev # 加攻击力
obj.life += self.life # 加生命值
def fire(self,obj): # 主动技能,喷火,烧死敌人
obj.life -= 1000
# 创建对象
r1 = Ruiwen("瑞文")
g1 = Gailun("盖伦")
b1 = ZhuangBei()
print(f"剩余 ${r1.money}, 生命值 {r1.life},攻击力 {r1.damage}")
if r1.money >= b1.price:
r1.b1 = b1 # 类的组合,添加装备攻击属性
b1.update_attack(r1) # 给英雄增加攻击、生命值属性
print(f"剩余 ${r1.money}, 生命值 {r1.life},攻击力 {r1.damage}")
# 查看盖伦英雄的剩余生命值
print("盖伦英雄的剩余生命值:",g1.life)
r1.attack(g1) # 普通攻击
# 查看盖伦英雄的剩余生命值
print("盖伦英雄的剩余生命值:",g1.life)
while True:
if g1.life <= 1000:
print("盖伦死了")
break
r1.b1.fire(g1) # 使用装备的主动攻击
# 查看盖伦英雄的剩余生命值
print(f"盖伦受到来自瑞文持有多兰剑装备 {b1.damage} 的攻击力,剩余生命值:", g1.life)
# 查看盖伦英雄的剩余生命值
print("盖伦英雄的剩余生命值:", 0)
终端打印:
剩余 $1000, 生命值 4104,攻击力 54
剩余 $525, 生命值 4204,攻击力 63
盖伦英雄的剩余生命值: 5000
盖伦英雄的剩余生命值: 4947
盖伦受到来自瑞文持有多兰剑装备 1000 的攻击力,剩余生命值: 3947
盖伦受到来自瑞文持有多兰剑装备 1000 的攻击力,剩余生命值: 2947
盖伦受到来自瑞文持有多兰剑装备 1000 的攻击力,剩余生命值: 1947
盖伦受到来自瑞文持有多兰剑装备 1000 的攻击力,剩余生命值: 947
盖伦死了
盖伦英雄的剩余生命值: 0
day19 作业的更多相关文章
- Day19作业及默写
三级菜单 menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车 ...
- day19作业
1.什么是对象?什么是类? 对象是特征和功能的结合体 类是一系列对象相同的特征和技能的集合体 2.绑定方法的有什么特点 绑定方式是由对象来调用类内部的函数,特点是会把对象当作第一个参数传入 ...
- 20 Python 常用模块
collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...
- python day19 : 购物商城作业,进程与多线程
目录 python day 19 1. 购物商城作业要求 2. 多进程 2.1 简述多进程 2.2 multiprocessing模块,创建多进程程序 2.3 if name=='main'的说明 2 ...
- Spark Streaming揭秘 Day19 架构设计和运行机制
Spark Streaming揭秘 Day19 架构设计和运行机制 今天主要讨论一些SparkStreaming设计的关键点,也算做个小结. DStream设计 首先我们可以进行一个简单的理解:DSt ...
- day19<异常&File类>
异常(异常的概述和分类) 异常(JVM默认是如何处理异常的) 异常(try...catch的方式处理异常1) 异常(try...catch的方式处理异常2) 异常(编译期异常和运行期异常的区别) 异常 ...
- python 作业
Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...
- day20模块作业
1.模块化作业 1.回顾文件递归遍历. 默写一遍. 入口在: 当文件是个文件夹的时候 出口在: 文件是一个文件 2.计算时间差(用户输入起始时间和结束时间. 计算时间差(小时), 例如, 用户输入20 ...
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...
随机推荐
- Windows start
启动一个单独的窗口以运行指定的程序或命令. START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] ...
- MySQL架构和索引
MySQL架构 逻辑架构图: 大概分为四层,这个见仁见义,有不同的分法: 第一层Connectors:处理不同语言与SQL的交互 第二层Connection Pool :连接池,管理缓存用户连接,线程 ...
- agc38C LCMs
https://atcoder.jp/contests/agc038/tasks/agc038_c 题意:给\(a_i\),求\(\sum_{i=1}^n\sum_{j=i+1}^nlcm(a_i,a ...
- golang的时区转换
一.代码 package main import ( "fmt" "time" ) const TIME_LAYOUT = "2006-01-02 1 ...
- VS2010-MFC(常用控件:列表视图控件List Control 上)
转自:http://www.jizhuomi.com/software/195.html 列表视图控件简介 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方 ...
- Java学习之继承关系内存分配
假设有C继承B,B继承A; 继承会继承除private修饰的成员变量,方法.但不会继承构造器. 所以调用被继承下来的方法时,不需要指明主调者,但是调用构造器时,就需要指明主调者,那就是super.如果 ...
- USB电扇无刷电机改装
现在USB电扇已经很常见了,网上随便可以低价买到.里面的电机分为有刷和无刷两种.我拆过的有刷USB电扇都非常劣质,里面的电机貌似是旧DVD机的拆机货:而无刷也有优劣之分,有的硅钢片非常少,铜线也细.这 ...
- Python调用DLL动态链接库——ctypes使用
最近要使用python调用C++编译生成的DLL动态链接库,因此学习了一下ctypes库的基本使用. ctypes是一个用于Python的外部函数库,它提供C兼容的数据类型,并允许在DLL或共享库中调 ...
- java笔试之提取不重复的整数
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 此题可以使用linkedHashedSet\ArrayList\Stack\数组等来做.类似题目是输入一个数/字符串,从 ...
- 如何为ABAP程序添加权限检查
一.确认权限对象,及其关联字段: TCode: SU21 例如权限对象"M_MSEG_WMB",它关联字段为"WERKS",详见下图: 二.在ABAP代码中添加 ...