1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python编写格斗游戏_设计并编写代码自动格斗类游戏。

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

时间:2020-03-01 04:40:16

相关推荐

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

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<

}

if(temp==1)//当随机数生成1时,英雄使用踢腿技能

{

R1.Kicking();

int harm = R1.ATK+R1.k_ATK-R2.DEF;

R2.hp -= harm;

cout<

}

if(temp==2)//当随机数生成2时,英雄使用抱摔技能

{

R1.Wrestling();

int harm = R1.ATK+R1.w_ATK-R2.DEF;

R2.hp -= harm;

cout<

}

}

if(i%2==0)//当i为偶数时敌人进行攻击

{

if(temp==0)//当随机数生成0时,英雄进行普通攻击

{

int harm = R2.ATK-R1.DEF;

R1.hp -= harm;

cout<

}

if(temp==1)//当随机数生成1时,敌人使用劈掌技能

{

R2.zp();

int harm = R2.ATK+R2.z_ATK-R1.DEF;

R1.hp -= harm;

cout<

}

if(temp==2)//当随机数生成2时,敌人使用连环踢技能

{

R2.lht();

int harm = R2.ATK+R2.l_ATK-R1.DEF;

R1.hp -= harm;

cout<

}

}

i++;

}

i = 0;

if(R1.hp<=0)

{

cout<

R2.EXP +=100;

if(R2.EXP>=100)

{

R2.Lv++;

cout<

}

cout<

}

if(R2.hp<=0)

{

cout<

R1.EXP +=100;

if(R1.EXP>=100)

{

R1.Lv++;

cout<

}

cout<

}

}

int main()

{

CHero yx("英雄",5,2,1,0);

CEnemy dr("敌人",4,2,1,0);

CBattle battle;

battle.attacMode(yx,dr);

}

代码实现图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。