zoukankan      html  css  js  c++  java
  • 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
    
    • 按照这种思路一点一点的设计类和对象,最终你完全可以实现一个对战类游戏。
  • 相关阅读:
    5、流程控制
    4、字典和元祖
    3、列表操作
    2、字符串和数据类型
    1.标识符练习
    使用xpath提取页面所有a标签的href属性值
    网页提取所有邮箱
    正则表达式
    提取包含QQ的文本为QQ邮箱
    python继承小demo
  • 原文地址:https://www.cnblogs.com/abdm-989/p/11892710.html
Copyright © 2011-2022 走看看