版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招标文件修改对专业分包的影响
- 地毯进出口代理购销合同
- 共有仲裁费用合作保证金协议
- 写作业保证书万能范文
- 专业美陈设计制作协议
- 个人垫资借款协议范本
- 专业仓储服务合同书
- 废除合同关系
- 瑜伽馆合作经营契约
- 企业礼品定制采购协议
- 学前教育法学习重点1
- 2024版合伙经营运输车辆合同范本
- 夏县县城污水处理提质增效-一厂一策-系统化整治方案
- 幼儿园中班健康《运动过后》课件
- 门卫室承包合同
- +Unit+2+We're+family+Section+A+2a+-+2e+说课稿 人教版(2024)七年级英语上册++
- 2024.11.9全国消防安全日全民消防生命至上消防科普课件
- 防性侵安全教育课件
- 一线员工供电服务行为规范专项测试题及答案
- 2024年山东省济南市中考英语试题卷(含答案)
- 3.1 农业区位因素及其变化 课件 高一地理人教版(2019)必修第二册
评论
0/150
提交评论