C/C++知识点之设计并编写代码自动格斗类游戏
小标 2018-08-10 来源 : 阅读 2963 评论 0

摘要:本文主要向大家介绍了C/C++知识点之设计并编写代码自动格斗类游戏,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之设计并编写代码自动格斗类游戏,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

1) 角色类CRole为基类:

构造函数、析构函数;

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

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

2)英雄类CHero继承于CRole类

构造函数、析构函数;

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

3)敌人类CEnemy继承于CRole类

构造函数、析构函数;

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

4)战斗类CBattle

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

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

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 6 不喜欢 | 0
看完这篇文章有何感觉?已经有6人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程