面向對象基礎實戰之英雄聯盟

1、定義銳雯類

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

2、定義蓋倫類

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

3、定義裝備類

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

4、交互

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
  • 按照這種思路一點一點的設計類和對象,最終你徹底能夠實現一個對戰類遊戲。
相關文章
相關標籤/搜索