摘要:本文主要向大家介绍了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+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号