1.什么是对象?什么是类?

​ 对象是特征和功能的结合体

​ 类是一系列对象相同的特征和技能的集合体

2.绑定方法的有什么特点

​ 绑定方式是由对象来调用类内部的函数,特点是会把对象当作第一个参数传入函数内,不用额外传参数

3.基于面向对象设计一个对战游戏

import random
import time
class Yasso:
    camp = 'lonia'
    def __init__(self,name):
        self.name = name
        self.atk = 48
        self.armor = 15
        self.health = 430
        self.money = 1200

    def attack(self, zed):
        damage = self.atk - zed.armor
        zed.health -= damage
        print(f'''{self.name}攻击了{zed.name},伤害:-{damage}
                {zed.name}剩余血量:{zed.health}\n''')
        if zed.health <= 0:
            return True

class Zed:
    camp = 'shadow'
    def __init__(self,name):
        self.name = name
        self.atk = 49
        self.armor = 17
        self.health = 445
        self.money = 1200

    def attack(self, yasso):
        damage = self.atk - yasso.armor
        yasso.health -= damage
        print(f'''{self.name}攻击了{yasso.name},伤害:-{damage}
        {yasso.name}剩余血量:{yasso.health}\n''')
        if yasso.health <= 0:
            return True

class Belt:
    weapon_type = 'defence'
    def __init__(self,name):
        self.name = name
        self.price = 1000
        self.health = 380

    def equip(self,obj):
        obj.money -= self.price
        obj.health += self.health

class BigSword:
    weapon_type = 'attack'
    def __init__(self,name):
        self.name = name
        self.price = 1200
        self.atk = 60

    def equip(self,obj):
        obj.money -= self.price
        obj.atk += self.atk

wick = Zed('火影劫')
tank = Yasso('快乐风男')
titan = Belt('巨人腰带')
storm = BigSword('暴风大剑')

print(f'''
玩家wick使用英雄{wick.name}
生命值:{wick.health}
攻击力:{wick.atk}
护甲:{wick.armor}
金币:{wick.money}\n''')
time.sleep(1.8)

print(f'''玩家tank使用英雄{tank.name}
生命值:{tank.health}
攻击力:{tank.atk}
护甲:{tank.armor}
金币:{tank.money}\n''')
time.sleep(1.8)

if wick.money >= storm.price:
    wick.storm = storm
    storm.equip(wick)
    print(f'{wick.name}购买了{storm.name}')
    time.sleep(1)

if tank.money >= titan.price:
    tank.titan = titan
    titan.equip(tank)
    print(f'{tank.name}购买了{titan.name}')
    time.sleep(1)

print(f'''
玩家wick使用英雄{wick.name}
生命值:{wick.health}
攻击力:{wick.atk}
护甲:{wick.armor}
金币:{wick.money}
装备:{wick.storm.name}\n''')
time.sleep(1.8)

print(f'''玩家tank使用英雄{tank.name}
生命值:{tank.health}
攻击力:{tank.atk}
护甲:{tank.armor}
金币:{tank.money}
装备:{tank.titan.name}\n''')
time.sleep(1.8)

while True:
    rand = random.randint(1,3)

    if rand == 1:

        res = wick.attack(tank)
        time.sleep(0.8)
        if res:
            print(f'''玩家wick使用{wick.name}很轻松的击杀了菜鸡玩家tank使用的{tank.name}''')
            break

    if rand == 2:

        res1 = tank.attack(wick)
        time.sleep(0.8)
        if res1:
            print(f'''玩家tank使用{tank.name}卑鄙无耻的侥幸击杀了玩家wick使用的{wick.name}''')
            break

day19作业的更多相关文章

  1. day19 作业

    今日作业 1.什么是对象?什么是类? 对象:特征和技能的结合体 类:一系列对象 相同的特征和技能的结合体 2.绑定方法的有什么特点 对象调用类内部的函数 称之为绑定方法,特点: 不同的对象调用该绑定方 ...

  2. Day19作业及默写

    三级菜单 menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车 ...

  3. 20 Python 常用模块

    collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...

  4. python day19 : 购物商城作业,进程与多线程

    目录 python day 19 1. 购物商城作业要求 2. 多进程 2.1 简述多进程 2.2 multiprocessing模块,创建多进程程序 2.3 if name=='main'的说明 2 ...

  5. Spark Streaming揭秘 Day19 架构设计和运行机制

    Spark Streaming揭秘 Day19 架构设计和运行机制 今天主要讨论一些SparkStreaming设计的关键点,也算做个小结. DStream设计 首先我们可以进行一个简单的理解:DSt ...

  6. day19<异常&File类>

    异常(异常的概述和分类) 异常(JVM默认是如何处理异常的) 异常(try...catch的方式处理异常1) 异常(try...catch的方式处理异常2) 异常(编译期异常和运行期异常的区别) 异常 ...

  7. python 作业

    Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...

  8. day20模块作业

    1.模块化作业 1.回顾文件递归遍历. 默写一遍. 入口在: 当文件是个文件夹的时候 出口在: 文件是一个文件 2.计算时间差(用户输入起始时间和结束时间. 计算时间差(小时), 例如, 用户输入20 ...

  9. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

随机推荐

  1. JavaSE知识点总结(一)

    第一章 课程介绍第二章 java语言概述 课时2:作业 1.常用软件分为那两类? 系统软件 应用软件 2.人机交互的两种方式是哪两种? 图形化界面 代码行命令 课时3:作业 1.java语言的特性有哪 ...

  2. redis-分布式锁-刷新信号量

    为什么需要刷新信号量呢,因为信号量有过期时间: 为什么信号量需要过期时间呢,因为需要利用超时特性,解决分布式锁存在的一些固有缺陷. 而对于类似流式API来说,一般10秒的过期时间是远远不够的.因此我们 ...

  3. map转换成com.google.gson.JsonObject

    String json =new Gson().toJson(map); JsonObject jsonObject =new JsonParser().parse(json).getAsJsonOb ...

  4. eclipse快捷键——纪念我突然失忆的脑子

    常用快捷键 1.快速new出来一个对象    Alt+/ 2.快速格式化代码              Ctrl+I 3.快速导入包                     Ctrl+Shift+O

  5. Python验证码

    from PIL import Image, ImageDraw, ImageFont, ImageFilter import random # 随机字母: def rndChar(): return ...

  6. wordpress访问速度慢

    可能是google字体的原因 1.找到wordpress目录下wp-includes/script-loader.php这个文件 2.查找open_sans_font_url这个字段,把后面的font ...

  7. 向net core 3.0进击——Swagger的改变

    目录 前言 引入 测试 小结 前言 十一小长假在不知不觉间可都没了,在这个小尾巴的空隙,把这两天鼓捣的net core 3.0升级过程记录一下,首先还是根据之前的顺序一个个补充进来,先从Swagger ...

  8. netty源码解解析(4.0)-23 ByteBuf内存管理:分配和释放

    ByteBuf内存分配和释放由具体实现负责,抽象类型只定义的内存分配和释放的时机. 内存分配分两个阶段: 第一阶段,初始化时分配内存.第二阶段: 内存不够用时分配新的内存.ByteBuf抽象层没有定义 ...

  9. C#的FTP服务器源代码

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. MacOS 安装MysqlDB 问题解决方案( 解决 IndexError: string index out of range)

    pip install MySQL-python时报错如下: Command "python setup.py egg_info" failed with error code 1 ...