C语言飞机大战源码_第1页
C语言飞机大战源码_第2页
C语言飞机大战源码_第3页
C语言飞机大战源码_第4页
C语言飞机大战源码_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论