版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include<iostream>#include<windows.h>#include<conio.h>#include<time.h>#include<string>usingnamespacestd;/*===============allthestructures===============*/typedefstructFrame{COORDposition©intflag;}Frame;/*===============allthefunctions===============*/voidSetPos(COORDa)//setcursor{HANDLEout二GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(out,a);}voidSetPos(inti,intj)//setcursor{COORDpos={i,j};SetPos(pos);}voidHideCursor(){CONSOLE_CURSOR」NFOcursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);}〃把第y行,[x1,x2)之间的坐标填充为chvoiddrawRow(inty,intx1,intx2,charch){SetPos(x1,y);for(inti=0;i<=(x2-x1);i++)cout<<ch;〃在a,b纵坐标相同的前提下,把坐标[a,b]之间填充为chvoiddrawRow(COORDa,COORDb,charch){if(a.Y==b.Y)drawRow(a.Y,a.X,b.X,ch);else{SetPos(0,25);cout<<"errorcode01:无法填充行,因为两个坐标的纵坐标(x)不相等";system("pause");}}〃把第x歹U,[y1,y2]之间的坐标填充为chvoiddrawCol(intx,inty1,inty2,charch){inty=y1;while(y!=y2+1){SetPos(x,y);cout<<ch;y++;}}〃在a,b横坐标相同的前提下,把坐标[a,b]之间填充为chvoiddrawCol(COORDa,COORDb,charch){if(a.X==b.X)drawCol(a.X,a.Y,b.Y,ch);else{SetPos(0,25);cout<<"errorcode02:无法填充列,因为两个坐标的横坐标(y)不相等";system("pause");}}〃左上角坐标、右下角坐标、用row填充行、用col填充列voiddrawFrame(COORDa,COORDb,charrow,charcol){drawRow(a.Y,a.X+1,b.X-1,row);drawRow(b.Y,a.X+1,b.X-1,row);drawCol(a.X,a.Y+1,b.Y-1,col);
drawCol(b.X,a.Y+1,b.Y-1,col);voiddrawFrame(intx1,inty1,intx2,inty2,charrow,charcol){COORDa={x1,y1};COORDb={x2,y2};drawFrame(a,b,row,col);}voiddrawFrame(Frameframe,charrow,charcol){COORDa=frame.position[0];COORDb=frame.position[1];drawFrame(a,b,row,col);}voiddrawPlaying(){drawFrame(0,0,48,24,'=','|');//drawmapframe;drawoutputframedrawscoreframedrawoperateframedrawothermessageframedrawFrame(49,0,79,4,'-','|');//drawFrame(49,4,79,9,'-','|');//drawFrame(49,9,79,20,'-','|');//drawFrame(49,drawoutputframedrawscoreframedrawoperateframedrawothermessageframecout<<"得分:";SetPos(52,7);cout<<"称号:";SetPos(52,10);cout<<"操作方式:";SetPos(52,12);cout<<"a,s,d,w控制战机移动SetPos(52,14);cout<<"p暂停游戏。SetPos(52,16);cout<<"e退出游戏。}〃在[a,b)之间产生一个随机整数intrandom(inta,intb){intc=(rand()%(a-b))+a;returnc;//在两个坐标包括的矩形框内随机产生一个坐标COORDrandom(COORDa,COORDb){intx=random(a.X,b.X);inty=random(a.Y,b.Y);COORDc={x,y};returnc;}booljudgeCoordInFrame(Frameframe,COORDspot){if(spot.X>=frame.position[0].X)if(spot.X<=frame.position[1].X)if(spot.Y>=frame.position[0].Y)if(spot.Y<=frame.position[0].Y)returntrue;returnfalse;}voidprintCoord(COORDa){cout<<"("<<a.X<<","<<a.Y<<")";}voidprintFrameCoord(Framea){printCoord(a.position[0]);cout<<"-";printCoord(a.position[1]);}intdrawMenu(){SetPos(30,1);cout<<"PlaneWar";drawRow(3,0,79,'-');drawRow(5,0,79,'-');SetPos(28,4);cout<<"w和s选择,k确定";SetPos(15,11);cout<<"1.简单的敌人";SetPos(15,13);cout<<"2.冷酷的敌人";drawRow(20,0,79,'-');drawRow(22,0,79,'-');SetPos(47,11);cout<<"简单的敌人:";SetPos(51,13);cout<<"简单敌人有着较慢的移动速度。";SetPos(24,21);cout<<"制作:中北大学12060341梦笔西谈";intj=11;SetPos(12,j);cout<<">>";//drawFrame(45,9,79,17,'=','|');while(1){if(_kbhit()){charx=_getch();switch(x){case'w':{if(j==13){SetPos(12,j);cout<<"";j=11;SetPos(12,j);cout<<">>";SetPos(51,13);cout<<" ";SetPos(47,11);cout<<"简单的敌人:";SetPos(51,13);cout<<"简单敌人有着较慢的移动速度}break;}case's':{if(j==11){SetPos(12,j);cout<<"";j=13;SetPos(12,j);
cout<<">>";SetPos(51,13);
cout<<"SetPos(47,11);cout<<"冷酷的敌人:";SetPos(51,13);cout<<"冷酷的敌人移动速度较快。}break;}case'k':{if(j==8)return1;elsereturn2;}}}}}/*DWORDWINAPIMusicFun(LPVOIDlpParamte){//DWORDOBJ;sndPlaySound(TEXT("bgm.wav"),SND_FILENAME|SND_ASYNC);return0;}*//*==================theGameClass==================*/classGame{public:COORDposition[10];COORDbullet[10];Frameenemy[8];intscore;intrank;intrankf;stringtitle;intflag_rank;Game();//初始化所有voidinitPlane();voidinitBullet();voidinitEnemy();//初始化其中一个//voidinitThisBullet(COORD);//voidinitThisEnemy(Frame);voidplaneMove(char);voidbulletMove();voidenemyMove();//填充所有voiddrawPlane();voiddrawPlaneToNull();voiddrawBullet();voiddrawBulletToNull();voiddrawEnemy();voiddrawEnemyToNull();//填充其中一个voiddrawThisBulletToNull(COORD);voiddrawThisEnemyToNull(Frame);voidPause();voidPlaying();voidjudgePlane();voidjudgeEnemy();voidShoot();voidGameOver();voidprintScore();};Game::Game(){initPlane();initBullet();}}initEnemy();score=0;rank=25;rankf=0;flag_rank=0;voidGame::initPlane(){COORDcentren={39,22};position[0].X=position[5].X=position[7].X=position[9].X=centren.X;position[1].X=centren.X-2;position[2].X=position[6].X=centren.X-1;position[3].X=position[8].X=centren.X+1;position[4].X=centren.X+2;for(inti=0;i<=4;i++)position[i].Y=centren.Y;for(inti=6;i<=8;i++)position[i].Y=centren.Y+1;position[5].Y=centren.Y-1;position[9].Y=centren.Y-2;voidGame::drawPlane(){for(inti=0;i<9;i++){SetPos(position[i]);if(i!=5)cout<<"O";elseif(i==5)cout<<"|";voidGame::drawPlaneToNull()for(inti=0;i<9;i++){SetPos(position[i]);cout<<"";voidGame::initBullet(){for(inti=0;i<10;i++)bullet[i].Y=30;}voidGame::drawBullet(){for(inti=0;i<10;i++){if(bullet[i].Y!=30){SetPos(bullet[i]);cout<<"A";}}}voidGame::drawBulletToNull(){for(inti=0;i<10;i++)if(bullet[i].Y!=30){COORDpos={bullet[i].X,bullet[i].Y+1};SetPos(pos);cout<<"";}}voidGame::initEnemy(){COORDa={1,1};COORDb={45,15};for(inti=0;i<8;i++){enemy[i].position[0]=random(a,b);enemy[i].position[1].X=enemy[i].position[0].X+3;enemy[i].position[1].Y=enemy[i].position[0].Y+2;}}voidGame::drawEnemy(){for(inti=0;i<8;i++)drawFrame(enemy[i].position[0],enemy[i].position[1],'-','|');voidGame::drawEnemyToNull(){for(inti=0;i<8;i++){drawFrame(enemy[i].position[0],enemy[i].position[1],'','');voidGame::Pause(){SetPos(61,2);cout<<"SetPos(61,2);cout<<"暂停中...";charc=_getch();while(c!='p')c=_getch();SetPos(61,2);cout<<"voidGame::planeMove(charx){if(x=='a')if(position[1].X!=1)for(inti=0;i<=9;i++)position[i].X-=2;if(x=='s')if(position[7].Y!=23)for(inti=0;i<=9;i++)position[i].Y+=1;if(x=='d')if(position[4].X!=47)for(inti=0;i<=9;i++)position[i].X+=2;if(x=='w')if(position[5].Y!=3)for(inti=0;i<=9;i++)position[i].Y-=1;voidGame::bulletMove(){for(inti=0;i<10;i++){if(bullet[i].Y!=30){bullet[i].Y-=1;if(bullet[i].Y==1){COORDpos={bullet[i].X,bullet[i].Y+1};drawThisBulletToNull(pos);bullet[i].Y=30;}}}}voidGame::enemyMove(){for(inti=0;i<8;i++){for(intj=0;j<2;j++)enemy[i].position[j].Y++;if(24==enemy[i].position[1].Y){COORDa={1,1};COORDb={45,3};enemy[i].position[0]=random(a,b);enemy[i].position[1].X=enemy[i].position[0].X+3;enemy[i].position[1].Y=enemy[i].position[0].Y+2;}}}voidGame::judgePlane(){for(inti=0;i<8;i++)for(intj=0;j<9;j++)if(judgeCoordInFrame(enemy[i],position[j]))SetPos(62,1);cout<〈"坠毁";drawFrame(enemy[i],'+','+');Sleep(1000);GameOver();break;}}voidGame::drawThisBulletToNull(COORDc){SetPos(c);cout<<"";}voidGame::drawThisEnemyToNull(Framef){drawFrame(f,'','');}voidGame::judgeEnemy(){for(inti=0;i<8;i++)for(intj=0;j<10;j++)if(judgeCoordInFrame(enemy[i],bullet[j])){score+=5;drawThisEnemyToNull(enemy[i]);COORDa={1,1};COORDb={45,3};enemy[i].position[0]=random(a,b);enemy[i].position[1].X=enemy[i].position[0].X+3;enemy[i].position[1].Y=enemy[i].position[0].Y+2;drawThisBulletToNull(bullet[j]);bullet[j].Y=30;}}voidGame::Shoot(){for(inti=0;i<10;i++)if(bullet[i].Y==30){}}bullet[i].X=position[5].X;bullet[i].Y=position[5].Y-1;break;}}voidGame::printScore(){if(score==120&&flag_rank==0){rank-=3;flag_rank=1;}elseif(score==360&&flag_rank==1){rank-=5;flag_rank=2;}elseif(score==480&&flag_rank==2){rank-=5;flag_rank=3;}intx=rank/5;SetPos(60,6);cout<<score;if(rank!=rankf){SetPos(60,7);if(x==5)title="初级飞行员";elseif(x==4)title="中级飞行员";elseif(x==3)title="高级飞行员";elseif(x==2)title="王牌飞行员";cout<<title;}rankf=rank;voidGame::Playing(){//HANDLEMFUN;//MFUN=CreateThread(NULL,0,MusicFun,NULL,0,NULL);drawEnemy();drawPlane();intflag_bullet=0;intflag_enemy=0;while(1){Sleep(8);if(_kbhit()){charx=_getch();if('a'==x||'s'==x||'d'==x||'w'==x){drawPlaneToNull();planeMove(x);drawPlane();judgePlane();}elseif('p'==x)Pause();elseif('k'==x)Shoot();elseif('e'==x){//CloseHandle(MFUN);GameOver();break;}}/*处理子弹*/if(0==flag_bullet){bulletMove();drawBulletToNull();drawBullet();judgeEnemy();flag_bullet++;if(5==flag_bullet)flag_bullet=0;/*处理敌人*/if(0==flag_enemy){d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床静脉留置针护理及并发症
- 2024年度绿色有机食材供应合作协议2篇
- 2024天津出租车租赁车辆安全性能检测合同3篇
- 《特种货物运输法规》课件
- 《肝炎性假瘤》课件
- 国际贸易英语商务信函汉英翻译课件
- 2024年度农庄租赁协议标准版版B版
- 2024年企业内部培训师试用期合同2篇
- 2024年汽车展览专用场地租赁协议版B版
- 《PP制作T图片素材》课件
- 劳动最光荣六年级美术(课堂PPT)
- 地铁暗挖隧道注浆施工技术规程(试行)
- 天然药物化学试题库及答案(六套)
- 硫化钠理化特性表
- 工商管理本 组织行为学作业4答案
- QC输电线路新型防鸟害装置的研制
- FMEA第五版培训(完整版)
- 毕业设计(论文)-履带式微耕机的结构设计
- 卓越绩效评价准则实施指南
- 电厂保洁技术方案
- 【小课题结题报告】《创设“生活化”情境 激发初中学生学习生物兴趣的研究》结题报告
评论
0/150
提交评论