zoukankan      html  css  js  c++  java
  • 面向对象基础实战之英雄联盟

    一、定义锐雯类

    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
    
    • 按照这种思路一点一点的设计类和对象,最终你完全可以实现一个对战类游戏。
  • 相关阅读:
    WP7 操作XML文件
    C#和C/C++指针实现swap交换
    感受
    我学到了什么 我思考了什么.
    hdu 2768 Cat vs. Dog (最大独立)
    hdu 1960 Taxi Cab Scheme (最小覆盖)
    hdu 1528 Card Game Cheater (最小覆盖)
    hdu 4160 Dolls (最大独立)
    hdu 2458 Kindergarten (最大独立集)
    hdu 2119 Matrix (最小覆盖)
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11045903.html
Copyright © 2011-2022 走看看