首页 坦克大战,俄罗斯方块原码

坦克大战,俄罗斯方块原码

举报
开通vip

坦克大战,俄罗斯方块原码C/C++精品视频集 这是我收集的部分C/C++精品视频集. 其中部分下载地址: 2015-04-13 C语言精髓所在——指针的艺术 链接: 密码: nivq 2015-04-16 C++打造酷炫鼠标-Vico老师. 链接: 密码: 5j3z 2015-04-24 C++开发最牛贪吃蛇游戏------盛大内部核心技术 链接: 密码: 1n8e 视频太多没一一上传. 如果你需要更多可以加QQ:1329938469 下面是《《坦克大战》》和《《俄罗斯方块》》 坦克大战:(2页到18页) #include #inc...

坦克大战,俄罗斯方块原码
C/C++精品视频集 这是我收集的部分C/C++精品视频集. 其中部分下载地址: 2015-04-13 C语言精髓所在——指针的艺术 链接: 密码: nivq 2015-04-16 C++打造酷炫鼠标-Vico老师. 链接: 密码: 5j3z 2015-04-24 C++开发最牛贪吃蛇游戏------盛大内部核心技术 链接: 密码: 1n8e 视频太多没一一上传. 如果你需要更多可以加QQ:1329938469 下面是《《坦克大战》》和《《俄罗斯方块》》 坦克大战:(2页到18页) #include #include #include #include #include using namespace std; HANDLE Mutex=CreateMutex(NULL,FALSE,NULL);//互斥对象 int GameOver=0; int level=0; int map[23][23]; //坦克种类,Normal为玩家坦克 #define Normal 0 #define Red 1 #define Blue 2 #define Green 3 //方向的宏定义 #define Up 0 #define Down 1 #define Left 2 #define Right 3 //地图标记的宏定义 #define Empty 0 #define Player 1 #define PlayerBullet 2 #define EnemyBullet 3 #define Enemy 4 int Kill; int KillRed; int KillGreen; int EnemyExist; void SetPos(int i,int j)//设定光标位置 { COORD pos={i,j}; HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out, pos); } void HideCurSor(void)//隐藏光标 { CONSOLE_CURSOR_INFO info={1,0}; HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorInfo(Out,&info); } int sharp[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}, };//此数组用来保存坦克各个方向的形状信息 DWORD WINAPI Bulletfly(LPVOID lpParameter);//子弹函数申明 void Updata();//更新界面信息函数申明 class Tank//坦克类 { private: int Direction;//方向 int hotpoint[2];//活动点 int Speed;//速度 int FirePower;//火力 public: Tank(int dir,int hot1,int hot2,int typ,int spe,int firepow)//构造函数 { Direction=dir; hotpoint[0]=hot1; hotpoint[1]=hot2; Type=typ; Speed=spe; FirePower=firepow; } int Type;//坦克的种类(详见宏定义) int ID;//坦克在MAP中的标记(详见宏定义) int FireEnable;//是否可以开火 int Life;//生命值 void Running();//运行函数 int Judge(int x,int y,int ID);//判断是否可以绘制坦克 void DrawTank();//重绘坦克 void Redraw();//擦除坦克 int GetSpeed()//获取速度 { return Speed; } int GetFire()//获取火力 { return FirePower; } int GetDirection()//获取方向 { return Direction; } int GetHotX()//获取活动点坐标 { return hotpoint[0]; } int GetHotY() { return hotpoint[1]; } void IncreaseFire()//火力+ { FirePower++; } void IncreaseSpeed()//速度+ { Speed++; } void ChangeDirection(int newD)//改变方向 { Direction=newD; } void ChangePos(int x,int y)//改变活动点 { hotpoint[0]=x; hotpoint[1]=y; } }; Tank player(Right,0,0,Normal,1,1);//玩家 Tank enemy(Left,20,0,Red,1,1);//敌人 void Tank::DrawTank()//绘制坦克 { int i; int nx,ny; if(Type==Red) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED); else if(Type==Blue) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_BLUE); else if(Type==Green) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_GREEN); else if(Type==Normal) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_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<<"■"; } } void Tank::Redraw()//擦除坦克,原理同上 { int i; int nx,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<<" "; } } int Tank::Judge(int x,int y,int dir)//判断当前是否可以绘制坦克 { int i; int nx,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 return 1; } return 0; } void Tank::Running()//坦克运行函数 { int newD; //坦克的运行 while(1) { if(Life==0) { EnemyExist=0;//敌人不存在 return; } if(GameOver==1) return; if(FireEnable==1&&GameOver==0)//如果可以开火 { WaitForSingleObject(Mutex,INFINITE);//线程拥有互斥对象 FireEnable=0;//设为不可开火 HANDLE bullet=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; } } else if(newD==Down) { 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;
本文档为【坦克大战,俄罗斯方块原码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_079973
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:0
分类:互联网
上传时间:2019-07-23
浏览量:49