1 / 34
文档名称:

C大作业坦克大战.doc

格式:doc   大小:57KB   页数:34页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C大作业坦克大战.doc

上传人:泰山小桥流水 2023/11/22 文件大小:57 KB

下载得到文件列表

C大作业坦克大战.doc

相关文档

文档介绍

文档介绍:该【C大作业坦克大战 】是由【泰山小桥流水】上传分享,文档一共【34】页,该文档可以免费在线阅读,需要了解更多关于【C大作业坦克大战 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。#include<iostream>
#include<>
#include<>
#include<>
#include<>
usingnamespacestd;
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)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_INTENSITY|FOREGROUND_GREEN);elseif(Type==Normal)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGOUND_BLUE);
for(i=0;i<6;i++)
{
nx=hotpoint[0]+sharp[Direction][i*2];
ny=hotpoint[1]+sharp[Direction][i*2+1];
SetPos((ny+1)*2,nx+1);//利用sharp数组相关于点x,y绘制
形状
map[nx][ny]=ID;
cout<<"■";
}
}
voidTank::Redraw( )//擦除坦克,原理同上
{
inti;
intnx,ny;
for(i=0;i<6;i++)
{
nx=hotpoint[0]+sharp[Direction][i*2];
ny=hotpoint[1]+sharp[Direction][i*2+1];
map[nx][ny]=Empty;
SetPos((ny+1)*2,nx+1);
cout<<"";
}
}
intTank::Judge(intx,inty,intdir)//判断目前能否能够绘制坦克
{
inti;
intnx,ny;
for(i=0;i<6;i++)
{
nx=x+sharp[dir][i*2];
ny=y+sharp[dir][i*2+1];
if(nx<0||nx>=23||ny<0||ny>=23||map[nx][ny]!=Empty)//
不可以绘制,返回1
return1;
}
return0;
}
voidTank::Running( )//坦克运转函数
{
intnewD;
坦克的运转
while(1)
{
if(Life==0)
{
EnemyExist=0;//仇敌不存在
return;
}
if(GameOver==1)
return;
if(FireEnable==1&&GameOver==0)//假如能够开火
{
WaitForSingleObject(Mutex,INFINITE);//线程拥有互斥
对象
FireEnable=0;//设为不行开火
HANDLEbullet=CreateThread(NULL,0,Bulletfly,&ID,0,NULL);/
创立子弹线程
CloseHandle(bullet);
ReleaseMutex(Mutex);//开释互斥对象
Sleep(100);
}
WaitForSingleObject(Mutex,INFINITE);//线程拥有互斥对

srand((int)time(0));
newD=rand( )%4;
if(newD==Up)//随机出新的方向并从头绘制坦克
{
Redraw( );
if(Judge(hotpoint[0]-1,hotpoint[1],newD)==0)
{
hotpoint[0]--;
Direction=newD;
}
else
{
if(Judge(hotpoint[0],hotpoint[1],newD)==0)
Direction=newD;
}
}

最近更新

最新部编版三年级语文上册期中考试及答案【各.. 6页

最新部编版三年级语文上册期末考试题(新版) 7页

最新部编版二年级数学上册期中考试卷及完整答.. 7页

最新部编版二年级语文上册期中考试(含答案) 4页

最新部编版二年级语文上册期末考试带答案 5页

最新部编版五年级语文下册期中试卷(一套) 8页

最新部编版六年级数学上册期末考试带答案 6页

最新部编版四年级数学上册期中模拟考试含答案.. 7页

最新部编版四年级语文(下册)期末质量检测题及.. 7页

最新部编版四年级语文下册期末考试卷及答案(各.. 7页

泸教版一年级数学上册期中考试题及答案【推荐.. 6页

11第三单元第11课能力提升全练6(3) 11页

2025年饮水机合作协议书 69页

智能报告解析系统-优化体检报告,提升医效 23页

2025年公路涂料项目建议书 61页

2025年丁酮项目发展计划 57页

领导莅临督导指导工作简报(通用13篇) 10页

蚂蚁观察作文2篇 2页

老人与海500字读后感2篇 2页

精选照片的记忆作文3篇 4页

从钛冶炼氯化烟尘中提取的粗氧化钪的纯化工艺.. 2页

相见欢改写作文(精选15篇) 10页

从经济法角度试探讨网约车新政合理性 2页

歌伴童年作文5篇 4页

有关难忘的除夕作文锦集5篇 5页

有关小猫和狐狸作文3篇 2页

春节节日习俗作文4篇 3页

改写茅屋为秋风所破歌作文(4篇) 6页

抒情作文300字4篇[优选] 3页

成长,因奋斗而精彩作文3篇 3页