• day 19 作业


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

    对象是特征与技能的结合体,类是一系列对象相同的特征和技能的结合体

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

    类内部的函数主要是给对象用的

    由类来调用类内部的函数,该函数只是一个普通的函数,普通的函数需要接受几个参数就得传几个参数

    由对象来调用称之为对象的绑定方法,不同的对象调用该绑定方法,则会将不同的对象传入该绑定方法中

    对象的绑定方法,是由对象来调用的,特殊之处就是把对象当作第一个参数传入该方法中

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

    # 仿制英雄联盟角色
    import time
    
    
    class Riven:
        camp = 'Noxus'
    
        def __init__(self,
                     heroname,
                     aggressivity=54,
                     life_value=414,
                     money=2000,
                     armor=12,
                     grade=1):
            self.heroname = heroname
            self.aggressivity = aggressivity
            self.life_value = life_value
            self.money = money
            self.armor = armor
            self.grade = grade
    
        def attack(self, enemy):
            if self.life_value < 0:
                return True, f'{self.heroname}死亡,{enemy.heroname}获胜'
            if self.life_value:
                damage_value = self.aggressivity - enemy.armor
                enemy.life_value -= damage_value
                print(f'{self.heroname}开始攻击{enemy.heroname}
    造成{damage_value}伤害
    {enemy.heroname}剩余血量{enemy.life_value}
    ')
                return False, None
    
    
    class Garen:
        camp = 'Demacia'
    
        def __init__(self,
                     heroname,
                     aggressivity=56,
                     life_value=455,
                     money=300,
                     armor=19,
                     grade=1):
            self.heroname = heroname
            self.aggressivity = aggressivity
            self.life_value = life_value
            self.money = money
            self.armor = armor
            self.grade = grade
    
        def attack(self, enemy):
            if self.life_value < 0:
                return True, f'{self.heroname}死亡,{enemy.heroname}获胜'
            if self.life_value:
                damage_value = self.aggressivity - enemy.armor
                enemy.life_value -= damage_value
                print(f'{self.heroname}开始攻击{enemy.heroname}
    造成{damage_value}伤害
    {enemy.heroname}剩余血量{enemy.life_value}
    ')
                return False, None
    
    
    class BlackCleaver:
        def __init__(self, price=475, aggrev=9, life_value=100):
            self.price = price
            self.aggrev = aggrev
            self.life_value = life_value
    
        def update(self, obj):
            obj.money -= self.price
            obj.aggressivity += self.aggrev
            obj.life_value += self.life_value
            print(f'{obj.heroname}装备火焰武器
    {obj.heroname}获得攻击力加成{self.aggrev}点
    {obj.heroname}获得生命值加成{self.life_value}点')
    
        def fire(self, emeny):
            emeny.life_value -= 100
            print(f'{emeny.heroname}受到火焰伤害100')
    
    
    hero1 = Riven('锐雯')
    hero2 = Garen('德玛')
    wepon = BlackCleaver()
    count = 1
    while True:
    
    
        print(f'回合{count}开始:')
        flag, msg = hero2.attack(hero1)
        if count ==4:
            if hero1.money>wepon.price:
                 hero1.wepon = wepon
                 wepon.update(hero1)
                 hero1.wepon.fire(hero2)
        if flag == True:
            print(msg)
            break
    
        flag, msg = hero1.attack(hero2)
        if flag == True:
            print(msg)
            break
        count += 1
        time.sleep(1)
    
    
    
    

    输出结果:

    回合1开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量370
    
    锐雯开始攻击德玛
    造成35伤害
    德玛剩余血量420
    
    回合2开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量326
    
    锐雯开始攻击德玛
    造成35伤害
    德玛剩余血量385
    
    回合3开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量282
    
    锐雯开始攻击德玛
    造成35伤害
    德玛剩余血量350
    
    回合4开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量238
    
    锐雯装备火焰武器
    锐雯获得攻击力加成9点
    锐雯获得生命值加成100点
    德玛受到火焰伤害100
    锐雯开始攻击德玛
    造成44伤害
    德玛剩余血量206
    
    回合5开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量294
    
    锐雯开始攻击德玛
    造成44伤害
    德玛剩余血量162
    
    回合6开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量250
    
    锐雯开始攻击德玛
    造成44伤害
    德玛剩余血量118
    
    回合7开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量206
    
    锐雯开始攻击德玛
    造成44伤害
    德玛剩余血量74
    
    回合8开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量162
    
    锐雯开始攻击德玛
    造成44伤害
    德玛剩余血量30
    
    回合9开始:
    德玛开始攻击锐雯
    造成44伤害
    锐雯剩余血量118
    
    锐雯开始攻击德玛
    造成44伤害
    德玛剩余血量-14
    
    回合10开始:
    德玛死亡,锐雯获胜
    
  • 相关阅读:
    SorceTree 与 Bitbucket连接
    Android回调事件传播-android学习之旅(四十五)
    USACO Section 2.2 Subset Sums
    多线程计数器——原子操作
    《怪诞经济学》:2星。故意伪装成外国作者和翻译书。作者了解一些经济学结论,但是没受过经济学方面的学术训练。
    《科技失控》:3星。科技可能带给人类的坏的结果的汇总。
    《蚂蚁金服》:3星。支付宝准官修历史。
    《这才是心理学》:心理学常见误解与相关伪科学辨析。反证《巨婴国》作者要么是有意的骗子,要么是心理学差生。5星。
    《哈佛商业评论》2017年第4期:“指导式”销售能将购买便捷度提升86%。4星
    《知识大融通》:在生物、哲学、文化领域旁征博引,但是主题不够明确。3星。
  • 原文地址:https://www.cnblogs.com/LZF-190903/p/11643633.html
Copyright © 2020-2023  润新知