欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计并编写代码自动格斗类游戏。

程序员文章站 2022-08-01 19:37:04
1) 角色类CRole为基类: 构造函数、析构函数; 成员变量:头像、HP(血量)、ATK(攻击力)、DEF(防御力)、Lv(等级),EXP(经验值); 成员函数:武器攻击、跳跃。 2)英雄类CHero继承于CRole类 构造函数、析构函数; 英雄类新增技能踢腿(成员函数)、抱摔(成员函数),给对方 ......

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);
}

代码实现图:

设计并编写代码自动格斗类游戏。