day 19 (作业)
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