C大作业坦克大战
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#include
HANDLEMutex=CreateMutex(NULL,FALSE,NULL);/互/ 斥对象intGameOver=0;
intlevel=0;
intmap[23][23];
// 坦克种类,Normal 为玩家坦克
#defineNormal0
#defineRed1
#defineBlue2
#defineGreen3
// 方向的宏定义
#defineUp0
#defineDown1
#defineLeft2
#defineRight3
// 地图标记的宏定义
#defineEmpty0
#definePlayer1
#definePlayerBullet2
#defineEnemyBullet3
#defineEnemy4
intKill;
intKillRed;
intKillGreen;
intEnemyExist;
voidSetPos(inti,intj)// 设定光标位置
{
COORDpos={i,j};
HANDLEOut=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out,pos);
}
voidHideCurSor(void)// 隐藏光标
{
CONSOLE_CURSOR_INFOinfo={1,0};
HANDLEOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(Out,&info);
}
intsharp[4][12]=
{0,1,1,0,1,1,1,2,2,0,2,2},
{0,0,0,2,1,0,1,1,1,2,2,1},
{0,1,0,2,1,0,1,1,2,1,2,2},
{0,0,0,1,1,1,1,2,2,0,2,1},
};// 此数组用来保存坦克各个方向的形状信息DWORDWINAPIBulletfly(LPVOIDlpParameter);// 子弹函数申明voidUpdata();// 更新界面信息函数申明
classTank// 坦克类
{
private:
intDirection;// 方向
inthotpoint[2];// 活动点
intSpeed;// 速度
intFirePower;// 火力
public:
Tank(intdir,inthot1,inthot2,inttyp,intspe,intfirepow)// 构造函数{
Direction=dir;
hotpoint[0]=hot1;
hotpoint[1]=hot2; }
Type=typ;
Speed=spe;
FirePower=firepow;
}
intType;// 坦克的种类(详见宏定义) intID;// 坦克在MAP中的标记(详见宏定义) intFireEnable;// 是否可以开火intLife;// 生命值voidRunning();// 运行函数intJudge(intx,inty,intID);// 判断是否可以绘制坦克voidDrawTank();// 重绘坦克voidRedraw();// 擦除坦克intGetSpeed()// 获取速度
{
returnSpeed;
}
intGetFire()// 获取火力
{
returnFirePower;
}
intGetDirection()// 获取方向
{
returnDirection;
}
intGetHotX()// 获取活动点坐标
{
returnhotpoint[0];
}
intGetHotY()
{
returnhotpoint[1];
}
voidIncreaseFire()// 火力+
{
FirePower++;
}
voidIncreaseSpeed()// 速度+
{
Speed++;
}
voidChangeDirection(intnewD)//
改变方向{
Direction=newD;
}
voidChangePos(intx,inty)// 改变活动点
{
hotpoint[0]=x;
hotpoint[1]=y;
}
};
Tankplayer(Right,0,0,Normal,1,1);// 玩家
Tankenemy(Left,20,0,Red,1,1);// 敌人
voidTank::DrawTank()// 绘制坦克
{
inti;
intnx,ny;
if(Type==Red)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_RED);
elseif(Type==Blue)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE);
elseif(Type==Green)