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
posted @ 2019-10-09 19:43  &#127838;面包&#127838;  阅读(112)  评论(0编辑  收藏  举报