1) 角色类CRole为基类:

构造函数、析构函数;

成员变量:头像、HP(血量)、ATK(攻击力)、DEF(防御力)、Lv(等级),EXP(经验值);

成员函数:武器攻击、跳跃。

2)英雄类CHero继承于CRole类

构造函数、析构函数;

英雄类新增技能踢腿(成员函数)、抱摔(成员函数),给对方造成伤害具体值由学员自己进行设定;

3)敌人类CEnemy继承于CRole类

构造函数、析构函数;

新增技能劈掌(成员函数)、连环腿(成员函数),给对方造成伤害值由学员自己进行设定;

4)战斗类CBattle

构造函数、析构函数及其他成员函数

双方HP(血量)初始值为100,开始战斗以后,英雄和敌人轮流攻击对方,掉血量=攻击方技能伤害值+ATK(攻击方的攻击力)-DEF(防御方的防御力),当一方血量为0时,战斗结束,玩家经验值增加相应点数,当经验等级达一定时候,玩家等级提升。

#include<iostream>#include<ctime>#include<cstdlib>using namespace std;class CRole//角色类:基类
{    public:
        CRole();
        CRole(char *name,int ATK,int DEF,int Lv,int EXP);//构造函数
        ~CRole(){};    public:        char *name;        int hp;        int ATK;        int DEF;        int Lv;        int EXP;    public:        void WpAttack();//武器攻击
        void jump();//跳跃};
CRole::CRole(char *name,int ATK,int DEF,int Lv,int EXP)
{    this->name = name;    this->hp = 100;    this->ATK = ATK;    this->DEF = DEF;    this->Lv = Lv;    this->EXP = EXP;
}class CHero: public CRole//英雄类{    public :
        CHero(){};
        CHero(char *name,int ATK,int DEF,int Lv,int EXP):CRole(name,ATK,DEF,Lv,EXP){};//构造函数
        ~CHero(){};    public:        void Kicking();//踢腿技能
        void Wrestling();//抱摔技能
    public:        int k_ATK;//踢腿技能攻击力
        int w_ATK;//抱摔技能攻击力};void CHero::Kicking()//使用踢腿技能时,初始化踢腿技能攻击力{
    k_ATK = 30;
}void CHero::Wrestling()//使用抱摔技能时,初始化抱摔技能攻击力{
    w_ATK = 20;
}class CEnemy:public CRole//敌人类{    public :
        CEnemy(){};
        CEnemy(char *name,int ATK,int DEF,int Lv,int EXP):CRole(name,ATK,DEF,Lv,EXP){};//构造函数
        ~CEnemy(){};    public:        void zp();//劈掌技能
        void lht();//连环踢技能
    public:        int z_ATK;//劈掌技能攻击力
        int l_ATK;//连环踢技能攻击力};void CEnemy::zp()//使用劈掌技能时,初始化劈掌技能攻击力{
    z_ATK = 20;
}void CEnemy::lht()//使用连环踢技能时,初始化连环踢技能攻击力{
    l_ATK = 30;
}class CBattle//战斗类
{
    public :
        CBattle();//构造函数
        ~CBattle(){};    public:        void attacMode(CHero R1,CEnemy R2);//战斗函数
    public:        int i;        int temp;
};

CBattle::CBattle()
{
    i = 1;
    temp = 0;
}void CBattle::attacMode(CHero R1,CEnemy R2)
{
    srand((unsigned)time(0));//生成随机种子
    while(R1.hp>0&&R2.hp>0)//当英雄和敌人HP都大于0时继续战斗
    {
        temp = rand()%3;//生成0-2随机数
        if(i%2!=0)//当i为奇数时英雄进行攻击
        {            if(temp==0)//当随机数生成0时,英雄进行普通攻击
            {                int harm = R1.ATK-R2.DEF;
                R2.hp -= harm;                cout<<R1.name<<"进行普通攻击,对"<<R2.name<<"造成了"<<harm<<"点伤害\n";
            }            if(temp==1)//当随机数生成1时,英雄使用踢腿技能
            {
                R1.Kicking();                int harm = R1.ATK+R1.k_ATK-R2.DEF;
                R2.hp -= harm;                cout<<R1.name<<"使用踢腿"<<"进行攻击,对"<<R2.name<<"造成了"<<harm<<"点伤害\n";
            }            if(temp==2)//当随机数生成2时,英雄使用抱摔技能
            {
                R1.Wrestling();                int harm = R1.ATK+R1.w_ATK-R2.DEF;
                R2.hp -= harm;                cout<<R1.name<<"使用抱摔"<<"进行攻击,对"<<R2.name<<"造成了"<<harm<<"点伤害\n";
            }
        }        if(i%2==0)//当i为偶数时敌人进行攻击
        {            if(temp==0)//当随机数生成0时,英雄进行普通攻击
            {                int harm = R2.ATK-R1.DEF;
                R1.hp -= harm;                cout<<R2.name<<"进行普通攻击,对"<<R1.name<<"造成了"<<harm<<"点伤害\n";
            }            if(temp==1)//当随机数生成1时,敌人使用劈掌技能
            {
                R2.zp();                int harm = R2.ATK+R2.z_ATK-R1.DEF;
                R1.hp -= harm;                cout<<R2.name<<"使用劈掌"<<"进行攻击,对"<<R1.name<<"造成了"<<harm<<"点伤害\n";
            }            if(temp==2)//当随机数生成2时,敌人使用连环踢技能
            {
                R2.lht();                int harm = R2.ATK+R2.l_ATK-R1.DEF;
                R1.hp -= harm;                cout<<R2.name<<"使用连环踢"<<"进行攻击,对"<<R1.name<<"造成了"<<harm<<"点伤害\n";
            }
        }
        i++;
    }
    i = 0;    if(R1.hp<=0)
    {        cout<<R1.name<<"死亡\n";
        R2.EXP +=100;        if(R2.EXP>=100)
        {
            R2.Lv++;            cout<<R2.name<<"获得经验"<<100<<" 升级,当前等级为:"<<R2.Lv<<endl;
        }        cout<<R2.name<<"获胜";
    }    if(R2.hp<=0)
    {        cout<<R2.name<<"死亡\n";
        R1.EXP +=100;        if(R1.EXP>=100)
        {
            R1.Lv++;            cout<<R1.name<<"获得经验"<<100<<" 升级,当前等级为:"<<R1.Lv<<endl;
        }        cout<<R1.name<<"获胜";
    }
}int main(){    CHero yx("英雄",5,2,1,0);    CEnemy dr("敌人",4,2,1,0);
    CBattle battle;
    battle.attacMode(yx,dr);
}

代码实现图:

设计并编写代码自动格斗类游戏。_游戏图片来源:http://www.laoshoucun.com/ 传奇