zoukankan      html  css  js  c++  java
  • C++游戏系列2:角色装备武器

    很多其它见:C++游戏系列文件夹

    知识点:类的组合,A类的数据成员。是B类的对象,或B类的对象。做A类的数据成员
      
    【项目-带武器的游戏角色】
      设计一个武器类,其数据成员至少要有武器名、威力,还能够加上你想描写叙述武器的其它数据。

    想一想要对武器实施什么处理,设计其成员函数。
      在上周的游戏角色类Role基础上扩充,为每一个角色创建一个武器,并在攻击(attack)行为发生时,武器在当中起作用。制定游戏规则,使之接近于真实的游戏场景,并利用成员函数实现游戏规则,最后在main函数中通过调用对应的成员函数。模拟游戏过程。

    參考解答:

    /*
    仅设计了一个很easy的使用武器的规则
    当攻击对方时,自己涨血数等于自己武器的威力。同一时候对方失去等量血
    对方失血变为0或负后,死去
    欢迎游戏者,按你的想像扩充
    */
    #include <iostream>
    using namespace std;
    class Weapon
    {
    public:
        Weapon(string wnam, int f);
        int getForce();
    private:
        string wname;   //名称
        int force;       //威力
    };
    Weapon::Weapon(string wnam, int f):wname(wnam),force(f) {}
    int Weapon::getForce()
    {
        return force;
    }
    class Role
    {
    public:
        Role(string nam, int b, string wnam, int f); //构造函数
        ~Role(); //析构函数
        void eat(int d); //吃东西,涨d血
        void attack(Role &r); //攻击别人,自己涨血。同一时候失血
        bool isAlived(); //是否活着
        void show(); //显示
    private:
        string name;
        int blood;
        Weapon weapon;
        bool life;
    };
    Role::Role(string nam, int b, string wnam, int f):name(nam),blood(b),weapon(wnam,f)
    {
        if(blood>0)
            life=true;
        else
            life=false;
    }
    Role::~Role()
    {
        cout<<name<<"退出江湖..."<<endl;
    }
    void Role::eat(int d) //吃东西,涨d血
    {
        if(isAlived())
            blood+=d;
    }
    void Role::attack(Role &r) //攻击别人,涨1血
    {
        if(isAlived())
        {
            blood+=weapon.getForce();
            r.blood-=weapon.getForce();
            if(r.blood<=0)
                r.life=false;
        }
    }
    
    bool Role::isAlived() //是否活着
    {
        return life;
    }
    
    void Role::show() //显示
    {
        cout<<name<<" has "<<blood<<" blood, it is ";
        if(isAlived())
            cout<<"alived.";
        else
            cout<<"dead.";
        cout<<endl;
    }
    int main( )
    {
        Role mary("Mary", 500, "TuLong",200);
        Role jack("Jack", 10, "YiTian", 180);
        cout<<"---begin---"<<endl;
        mary.show();
        jack.show();
        cout<<"---1st round---"<<endl;
        jack.attack(mary);
        mary.show();
        jack.show();
        cout<<"---2nd round---"<<endl;
        mary.attack(jack);
        mary.show();
        jack.show();
        cout<<"---end---"<<endl;
        return 0;
    }
  • 相关阅读:
    测试AtomicInteger的可见性、有序性、原子性
    java实现hssf导出excel文件及自定义选择路径工具类
    map转换成com.google.gson.JsonObject
    String[]转List<String>
    classLoader打破双亲委托机制
    类加载器的加密解密
    自定义类加载器和父委托机制
    java中获取项目路径
    JVM内置三大类加载器详细介绍
    初识继承和多态
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7253720.html
Copyright © 2011-2022 走看看