c对战游戏代码.docx
《c对战游戏代码.docx》由会员分享,可在线阅读,更多相关《c对战游戏代码.docx(44页珍藏版)》请在冰点文库上搜索。
c对战游戏代码
{
public:
voidsetColor(unsignedshortForeColor,unsignedshortBackGroundColor)
{
HANDLEhCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
}
};
#endif
//***************************
//注意命名规则
//srand()函数
/*给文字作色
*/
//log类
//在最后做一个统计
//setw();
#define_CRT_SECURE_NO_DEPRECATE
#include"Game.h"
#include"Log.h"
#include
#include
usingnamespacestd;
Logdiary;
/**/
intmain()
{
GameG;
G.game();
cout<<"Preeanykeytoend!
";
_getch();
return0;
}
//Log.h日记类主要是记录整个战斗过程
#ifndefLog_h
classLog
{
private:
ofstreamfout;
public:
Log();
voidwrite(stringstr);
voidwrite(intNO);
voidwrite(doubleno);
~Log();
};
#endif
#include"Log.h"
Log:
:
Log()
{
fout.open("CombatRecord.txt");
}
Log:
:
~Log()
{
fout.close();
}
voidLog:
:
write(stringstr)
{
fout<}
voidLog:
:
write(intNO)
{
fout<}
voidLog:
:
write(doubleno)
{
fout<}
#defineWizard_h
#include
#include"Soldier.h"
usingnamespacestd;
classWizard:
publicSoldier
{
protected:
intmaxMP;//最大魔法值
doubleMP;//魔法值
public:
voidrest();
voidwizard_attack(Soldier&enemy);
public:
//booltest();
voidalter();//修改巫师的标识符为2
Wizard(stringname);
Wizard();
~Wizard();
boolmakeDecision(Soldier&enemy);//返回是否使用了魔法
};
#endif
#define_CRT_SECURE_NO_DEPRECATE
#include"Wizard.h"
#include
#include
#include
usingnamespacestd;
#include"Log.h"
#include
externLogdiary;
Wizard:
:
Wizard(stringname)
:
Soldier(name)
{
maxMP=100;
MP=100;
alter();//在构造函数中自动修改标识符
}
voidWizard:
:
alter()
{
i=2;
}
Wizard:
:
Wizard()
{
{
}
voidWizard:
:
rest()
{
Soldier:
:
rest();
MP+=maxMP*0.3;
if(MP>maxMP)
MP=maxMP;
}
voidWizard:
:
wizard_attack(Soldier&enemy)
{
setColor(14,0);
cout<name;
diary.write(name);
setColor(10,0);
cout<<"["<level<<"级]";
diary.write("[");
diary.write(level);
diary.write("级]");
setColor(15,0);
cout<<"";
diary.write("");
setColor(12,0);
cout<HP;
diary.write(HP);
setColor(15,0);
//cout<<"/100SP:
";
//diary.write("/100SP:
");
cout<<"/";
cout<maxHP;
cout<<"SP:
";
diary.write("/");
diary.write(maxHP);
diary.write("SP:
");
setColor(12,0);
cout<SP;
diary.write(SP);
setColor(15,0);
//cout<<"/100>";
//diary.write("/100>");
cout<<"/";
cout<maxSP;
cout<<">";
//
//cout<<"魔法攻击";
diary.write("魔法攻击");
setColor(14,0);
cout<diary.write(enemy.getName());
setColor(10,0);
cout<<"["<diary.write("[");
diary.write(enemy.getName());
setColor(15,0);
cout<<"";
diary.write("");
setColor(12,0);
cout<diary.write(enemy.getHP());
setColor(15,0);
cout<<"/100SP:
";
diary.write("/100SP:
");
cout<<"/";
cout<maxHP;
cout<<"SP:
";
diary.write("/");
diary.write(maxHP);
diary.write("SP:
");
setColor(12,0);
cout<diary.write(enemy.getHP());
setColor(15,0);
cout<<"/";
cout<maxSP;
cout<<">\n";
diary.write("/");
diary.write(maxSP);
diary.write(">\n");
this->SP-=10;
this->MP-=25;
this->exp+=5;
enemy.setHP(enemy.getHP()-this->damage);
if(this->exp>=this->level*20)//判断巫师在攻击后是否进行升级
{
this->level++;
this->maxHP+=20;
this->maxSP+=20;
this->damage+=20;
cout<name<<"打死\n";
this->damage+=enemy.getDrugNum();
enemy.setHP(0);
enemy.setSP(0);
enemy.setLevel(0);
enemy.setmaxHP(0);
enemy.setmaxSP(0);
if(enemy.getI()==1)//在相应的计数器上加一
{
s_num++;
}
elseif(enemy.getI()==2)
{
w_num++;
}
elseif(enemy.getI()==3)
{
m_num++;
}
}
}
boolWizard:
:
makeDecision(Soldier&enemy)
{
inttemp;
if(HPthis->takingDrug();
elseif(SPthis->rest();
else
{
if(MP>25&&this->SP>10&&enemy.getI()>=2)
{
this->wizard_attack(enemy);
returntrue;
}
elseif(MP>25&&SP>10)
{
temp=rand()%2;
if(temp==0)
{
this->attack(enemy);
returnfalse;
}
else
}
else
{
this->attack(enemy);
returnfalse;
}
}
returnfalse;
}
//***************************
//Soldier.h
//注意命名规则
#ifndefSoldier_h
#defineSoldier_h
#include
#include"Log.h"
#include"Color.h"
usingnamespacestd;
classSoldier:
publicColor
{
protected:
intmaxHP,maxSP;//生命最大值和体力最大值
doubleHP;//生命
doubleSP;//体力
doubledamage;//攻击力
intexp;//经验
intlevel;//等级
stringname;//姓名
intdrugNum;//药瓶数量
inti;//标明对方的身份1表示Soldier,2表示Wizard,3表示Master
ints_num,w_num,m_num;//记录战士的杀敌情况
public:
//作测试用的
voidattack(Soldier&enemy);
voidrest();
voidtakingDrug();
public:
stringgetName(){returnname;}
doublegetSP(){returnSP;}
voidsetSP(doublesp){SP=sp;}
intgetI(){returni;}
voidsetLevel(intilevel){level=ilevel;}
voidsetmaxHP(intihp){maxHP=ihp;}
voidsetmaxSP(intisp){maxSP=isp;}
Soldier();
Soldier(stringiname);
~Soldier();
virtualboolmakeDecision(Soldier&enemy);
virtualvoidtotal();
};
#endif
//******************************
#define_CRT_SECURE_NO_DEPRECATE
#include"Soldier.h"
#include
#include
#include"Log.h"
usingnamespacestd;
#include
Soldier:
:
Soldier()
{
}
Soldier:
:
Soldier(stringiname)
{
maxHP=200;
maxSP=200;
name=iname;
HP=100;
SP=100;
damage=5;
exp=0;
level=1;
drugNum=5;
i=1;
s_num=0;
w_num=0;
m_num=0;
}
{
setColor(14,0);
cout<name;
diary.write(name);
setColor(10,0);
cout<<"["<level<<"级]";
diary.write("[");
diary.write(level);
diary.write("级]");
setColor(15,0);
cout<<"";
diary.write("HP:
");
setColor(12,0);
cout<HP;
diary.write(HP);
setColor(15,0);
cout<<"/";
cout<maxHP;
cout<<"SP:
";
diary.write("/");
diary.write(maxHP);
diary.write("SP:
");
setColor(12,0);
cout<SP;
diary.write(SP);
setColor(15,0);
cout<<"/";
cout<maxSP;
cout<<">";
diary.write("/");
diary.write(maxSP);
diary.write(">");
setColor(11,0);
cout<<"攻击";
diary.write("攻击");
setColor(14,0);
cout<diary.write(enemy.name);
setColor(10,0);
cout<<"["<diary.write("[");
diary.write(enemy.level);
diary.write("]");
setColor(15,0);
cout<<"";
setColor(15,0);
cout<<"/";
cout<maxHP;
cout<<"SP:
";
diary.write("/");
diary.write(maxHP);
diary.write("SP:
");
setColor(12,0);
cout<diary.write(enemy.SP);
setColor(15,0);
cout<<"/";
cout<maxSP;
cout<<">\n";
diary.write("/");
diary.write(maxSP);
diary.write(">\n");
if(SP>=5)
{
this->SP-=5;
this->exp+=5;
enemy.HP-=this->damage;
if(this->exp>=(this->level*20+20))//看攻击者是否升级
{
setColor(12,0);
cout<name<<"升级!
\n";
diary.write(name);
diary.write("升级!
\n");
setColor(15,0);
this->level++;
this->maxHP+=20;
this->maxSP+=20;
this->damage+=20;
}
if(enemy.HP<=0)//判断敌人是否被打死了
{
cout<name<<"打死\n";
diary.write(enemy.name);
diary.write("被");
diary.write(name);
diary.write("打死\n");
this->drugNum+=enemy.drugNum;
enemy.setHP(0);
enemy.setSP(0);
enemy.setLevel(0);
enemy.setmaxHP(0);
enemy.setmaxSP(0);
if(enemy.getI()==1)//在相应的计数器上加一
s_num++;
elseif(enemy.getI()==2)
w_num++;
elseif(enemy.getI()==3)
m_num++;
}
}
else
{
cout<<"体力不足无法攻击!
\n";
}
}
voidSoldier:
:
rest()
{
setColor(14,0);
cout<name;
diary.write(name);
setColor(10,0);
cout<<"["<level<<"级]";
diary.write("[");
diary.write(level);
diary.write("级]");
setColor(15,0);
cout<<"";
diary.write("HP:
");
setColor(12,0);
cout<HP;
diary.write(HP);
setColor(15,0);
cout<<"/";
cout<maxHP;
cout<<"SP:
";
diary.write("/");
diary.write(maxHP);
diary.write("SP:
");
setColor(12,0);
cout<SP;
diary.write(SP);
diary.write("/");
diary.write(maxSP);
diary.write(">");
setColor(15,0);
cout<<"休息";
diary.write("休息");
HP+=maxHP*0.5;
if(HP>maxHP)
{
HP=maxHP;
}
SP+=maxSP*0.5;
if(SP>maxSP)
{
SP=maxHP;
}
setColor(10,0);
cout<<"["<level<<"级]";
diary.write("[");
diary.write(level);
diary.write("级]");
setColor(15,0);
cout<<"";
diary.write("HP:
");
setColor(12,0);
cout<HP;
diary.write(HP);
setColor(15,0);
cout<<"/";
cout<maxHP;
cout<<"SP:
";
diary.write("/");
diary.write(maxHP);
diary.write("SP:
");
setColor(12,0);
cout<SP;
diary.write(SP);
setColor(15,0);
cout<<"/";
cout<maxSP;
cout<<">\n";
diary.write("/");
diary.write(maxSP);
diary.write(">\n");
{
if(this->drugNum==0)
{
setColor(12,0);
cout<name<<"你已经没有药了\n";
setColor(15,0);
}
else
{
setColor(14,0);
cout<name;
cout<<"["<level<<"级]";
diary.write("[");
diary.write(level);
diary.write("级]");
setColor(15,0);
cout<<"";
diary.write("HP:
");
setColor(12,0);
cout<HP;
diary.write(HP);
setColor(15,0);
//cout<<"/100SP:
";
cout<<"/";
cout<maxHP;
cout<<"SP:
";
diary.write("/");
diary.write(maxHP);
diary.write("SP:
");
setColor(12,0);
cout<SP;
diary.write(SP);
setColor(15,0);
//cout<<"/100>";
cout<<"/";
cout<maxSP;
cout<<">";
diary.write("/");
diary.write(maxSP);
diary.write(">");
setColor(15,0);
cout<<"吃药";
diary.write("吃药");
this->drugNum--;
HP+=maxHP*0.5;
diary.write("[");
diary.write(level);
diary.write("级]");
setColor(15,0);
cout<<"";
diary.write("HP:
");
setColor(12,0);
cout<HP;
diary.write(HP);
setColor(15,0);
cout<<"/";
cout<maxHP;
cout<<"SP:
";
diary.write("/");
diary.write(maxHP);
diary.write("SP:
");
setColor(12,0);
cout<SP;
diary.write(SP);
setColor(15,0);
cout<<"/";
cout<maxSP;
cout<<">\n";
diary.write("/");
diary.write(maxSP);
diary.write(">\n");
setColor(15,0);
}
}
Soldier:
:
~Soldier()
{
}
voidSoldier:
:
total()
{
setColor(14,0);
cout<name<<"";
diary.write(name+"");
setColor(10,0);
cout<<"["<level<<"级]";
diary.write("[");
diary.write(level);
diary.write("级]");
cout<HP;
diary.write(HP);
setColor(15,0);
cout<<"/";
cout<ma