• day 19 (作业)


    day 19 (作业)

    1

    对象指;特征与技能的结合体,‘具体的事物’

    类是指;一系列具有相同的特征和技能的结合体。

    2

    对象的绑定方法,就是由对象来调用类中的函数

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

    1. 由类来调用该函数,这个函数就是一个普通的函数,需要几个参数就要传几个参数。
    2. 由对象来调用这个函数,会将对象本身当作第一个位置实参传入,调用时从第二个型参开始传

    3

    # 没有武器和装备的无脑版
    '''
    锐雯;
        初始装备;红药水;3 (每只回复125点生命值)  燃烧瓶;1 (每只造成250点伤害)
        生命值;(默认)414(+86/每造成200点伤害)    攻击力;54(+3/每造成200点伤害)   护甲;12(+3/每造成200点伤害)
        技能;突刺(造成150点伤害)     暴击加成;造成双倍伤害
    盖伦;
        初始装备;红药水;3 (每只回复125点生命值)  燃烧瓶;1 (每只造成250点伤害)
        生命值;(默认)455(+96/每造成200点伤害)    攻击力;56(+3/每造成200点伤害)   护甲;19(+2/每造成200点伤害)
        技能;挥砍(造成130点伤害)
    '''
    import random
    
    rj=[1,2,3]
    red=125
    molotov=250
    
    class Riven:
        red_potion=3
        molotov_cocktails=1
        damage=54
        armor=12
        the_label='riven'
        jn=150
        dj = 0
        jy = 0
        sj_hf=86
        sj_js=3
        sj_hj=12
        def __init__(self,name,money=6300,life=414):
            self.name=name
            self.money=money
            self.life=life
        def attack(self):
            '''使用普通攻击'''
            aa = random.randint(1, 15)
            if aa in rj:
                g1.life-=(self.damage*2)-g1.armor
                self.jy+=(self.damage*2)-g1.armor
                if self.jy>=200:
                    self.dj+=1
                    self.jy-=200
                    self.damage+=self.sj_js
                    self.armor+=self.sj_hj
                    self.life+=self.sj_hf
                return True,f'{self.name}触发暴击对{g1.name}造成{(self.damage*2)-g1.armor}点伤害'
            g1.life -= self.damage-g1.armor
            self.jy += self.damage - g1.armor
            if self.jy >= 200:
                self.dj += 1
                self.jy -= 200
                self.damage += self.sj_js
                self.armor += self.sj_hj
                self.life += self.sj_hf
            return True, f'{self.name}发动普通攻击对{g1.name}造成{self.damage-g1.armor}点伤害'
    
        def restore(self):
            '''使用红药水'''
            if self.red_potion>0:
                self.red_potion-=1
                self.life+=125
                return True,f'{self.name}使用一瓶红药水,生命值回复{red}点'
            return False,'你没有红药水了'
        def throwing(self):
            '''使用燃烧瓶'''
            if self.molotov_cocktails>0:
                self.molotov_cocktails-=1
                g1.life -= molotov-g1.armor
                self.jy += molotov-g1.armor
                if self.jy >= 200:
                    self.dj += 1
                    self.jy -= 200
                    self.damage += self.sj_js
                    self.armor += self.sj_hj
                    self.life += self.sj_hf
                return True,f'{self.name}使用了一瓶燃烧瓶,对{g1.name}造成了{molotov-g1.armor}点伤害'
            return False,'你没有燃烧瓶了'
        def slashing(self):
            '''使用技能'''
            aa = random.randint(1, 4)
            if aa in rj:
                g1.life -= self.jn-g1.armor
                self.jy += self.jn-g1.armor
                if self.jy >= 200:
                    self.dj += 1
                    self.jy -= 200
                    self.damage += self.sj_js
                    self.armor += self.sj_hj
                    self.life += self.sj_hf
                return True, f'{self.name}对{g1.name}发动技能造成{self.jn-g1.armor}点伤害'
            return True, f'{self.name}技能发动失败'
    
    
    class Garen:
        red_potion=3
        molotov_cocktails=1
        damage=54
        armor=12
        the_label='garen'
        jn = 130
        dj = 0
        jy = 0
        sj_hf = 96
        sj_js = 3
        sj_hj = 19
        def __init__(self,name,money=5000,life=455):
            self.name=name
            self.money=money
            self.life=life
        def attack(self):
            '''使用普通攻击'''
            g1.life -= self.damage - g1.armor
            self.jy += self.damage - g1.armor
            if self.jy >= 200:
                self.dj += 1
                self.jy -= 200
                self.damage += self.sj_js
                self.armor += self.sj_hj
                self.life += self.sj_hf
            return True, f'{self.name}发动普通攻击对{r1.name}造成{self.damage - r1.armor}点伤害'
        def restore(self):
            '''使用红药水'''
            if self.red_potion>0:
                self.red_potion-=1
                self.life+=125
                return True,f'{self.name}使用一瓶红药水,生命值回复{red}点'
            return False,'你没有红药水了'
        def throwing(self):
            '''使用燃烧瓶'''
            if self.molotov_cocktails > 0:
                self.molotov_cocktails -= 1
                r1.life -= molotov - r1.armor
                self.jy += molotov - r1.armor
                if self.jy >= 200:
                    self.dj += 1
                    self.jy -= 200
                    self.damage += self.sj_js
                    self.armor += self.sj_hj
                    self.life += self.sj_hf
                return True, f'{self.name}使用了一瓶燃烧瓶,对{r1.name}造成了{molotov - r1.armor}点伤害'
            return False, '你没有燃烧瓶了'
        def slashing(self):
            '''使用技能'''
            aa = random.randint(1, 4)
            if aa in rj:
                r1.life -= self.jn - r1.armor
                self.jy += self.jn - r1.armor
                if self.jy >= 200:
                    self.dj += 1
                    self.jy -= 200
                    self.damage += self.sj_js
                    self.armor += self.sj_hj
                    self.life += self.sj_hf
                return True, f'{self.name}对{r1.name}发动技能造成{self.jn - r1.armor}点伤害'
            return True, f'{self.name}技能发动失败'
    
    r1=Riven('riven1',7000,500)
    g1=Garen('garen1',5000,450)
    
    r1_dic={
        1:r1.attack,
        2:r1.restore,
        3:r1.throwing,
        4:r1.slashing
    }
    g1_dic={
        1:g1.attack,
        2:g1.restore,
        3:g1.throwing,
        4:g1.slashing
    }
    num=1
    while True:
        print(f'第{num}回合')
        while True:
            r1a = random.randint(1, 4)
            flag,msg=r1_dic[r1a]()
            if flag:
                print(msg)
                print(f'{r1.name};生命值为{r1.life}点;等级为{r1.dj}级;攻击力为{r1.damage}点;防御力为{r1.armor}点')
                break
        if g1.life<=0:
            print(f'{r1.name}获胜')
            break
        while True:
            g1a = random.randint(1, 4)
            flag,msg=g1_dic[g1a]()
            if flag:
                print(msg)
                print(f'{g1.name};生命值为{g1.life}点;等级为{g1.dj}级;攻击力为{g1.damage}点;防御力为{g1.armor}点')
                break
        if r1.life<=0:
            print(f'{g1.name}获胜')
            break
        num+=1
    
  • 相关阅读:
    vs code 使用小技巧
    数组22组合
    js--arTemplate引擎
    JAVA -简要记录maven的安装与环境变量的配置
    JAVA -简要记录jdk的安装与环境变量的配置
    浅谈“复制粘贴”对于程序员的伤害
    C#中 IndexOf的使用
    C# Substring函数的总结
    C# 还原Nuget包失败的解决方法
    C# 未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)解决方案
  • 原文地址:https://www.cnblogs.com/luocongyu/p/11643927.html
Copyright © 2020-2023  润新知