Justin-刘清政的博客

python/面向对象基础/11-面向对象基础实战之英雄联盟

2020-12-21

一、定义锐雯类

114-面向对象基础实战之英雄联盟-rw1.png

114-面向对象基础实战之英雄联盟-rw2.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Riven:
camp = 'Noxus' # 所有玩家的英雄(锐雯)的阵营都是Noxus;

def __init__(
self,
nickname,
aggressivity=54, # 英雄的初始攻击力54;
life_value=414,
money=1001,
armor=3):
self.nickname = nickname # 为自己的锐雯起个别名;
self.aggressivity = aggressivity # 英雄都有自己的攻击力;
self.life_value = life_value # 英雄都有自己的生命值;
self.money = money
self.armor = armor

def attack(self, enemy): # 普通攻击技能,enemy是敌人;
damage_value = self.aggressivity - enemy.armor # 根据自己的攻击力,攻击敌人就减掉敌人的生命值。
enemy.life_value -= damage_value

二、定义盖伦类

114-面向对象基础实战之英雄联盟-gl1.png

114-面向对象基础实战之英雄联盟-gl2.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Garen:  # 定义英雄盖伦的类,不同的玩家可以用它实例出自己英雄;
camp = 'Demacia' # 所有玩家的英雄(盖伦)的阵营都是Demacia;

def __init__(
self,
nickname,
aggressivity=58, # 英雄的初始攻击力58...;
life_value=455,
money=100,
armor=10):
self.nickname = nickname # 为自己的盖伦起个别名;
self.aggressivity = aggressivity # 英雄都有自己的攻击力;
self.life_value = life_value # 英雄都有自己的生命值;

self.money = money
self.armor = armor

def attack(self, enemy): # 普通攻击技能,enemy是敌人;
damage_value = self.aggressivity - enemy.armor # 根据自己的攻击力,攻击敌人就减掉敌人的生命值。
enemy.life_value -= damage_value

三、定义装备类

114-面向对象基础实战之英雄联盟-zb.png

1
2
3
4
5
6
7
8
9
10
11
12
13
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 #加生命值

def fire(self, obj): #这是该装备的主动技能,喷火,烧死对方
obj.life_value -= 1000 #假设火烧的攻击力是1000

四、交互

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
r1 = Riven('草丛伦')
g1 = Garen('盖文')
b1 = BlackCleaver()

print(r1.aggressivity, r1.life_value, r1.money) #r1的攻击力,生命值,护甲

if r1.money > b1.price:
r1.b1 = b1
b1.update(r1)

print(r1.aggressivity, r1.life_value, r1.money) #r1的攻击力,生命值,护甲

print(g1.life_value)
r1.attack(g1) #普通攻击
print(g1.life_value)
r1.b1.fire(g1) #用装备攻击
print(g1.life_value) #g1的生命值小于0就死了
1
2
3
4
5
54 414 1001
63 514 526
455
402
-598
  • 按照这种思路一点一点的设计类和对象,最终你完全可以实现一个对战类游戏。
使用支付宝打赏
使用微信打赏

点击上方按钮,请我喝杯咖啡!

扫描二维码,分享此文章