122 面向对象基础实战之英雄联盟

一、定义锐雯类

114-面向对象基础实战之英雄联盟-rw1.png?x-oss-process=style/watermark

114-面向对象基础实战之英雄联盟-rw2.png?x-oss-process=style/watermark

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?x-oss-process=style/watermark

114-面向对象基础实战之英雄联盟-gl2.png?x-oss-process=style/watermark

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?x-oss-process=style/watermark

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

四、交互

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就死了
54 414 1001
63 514 526
455
402
-598
  • 按照这种思路一点一点的设计类和对象,最终你完全可以实现一个对战类游戏。
原文地址:https://www.cnblogs.com/abdm-989/p/11892710.html