一个打飞机的小游戏 C 编写.docx
- 文档编号:6314391
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:21
- 大小:18.56KB
一个打飞机的小游戏 C 编写.docx
《一个打飞机的小游戏 C 编写.docx》由会员分享,可在线阅读,更多相关《一个打飞机的小游戏 C 编写.docx(21页珍藏版)》请在冰豆网上搜索。
一个打飞机的小游戏C编写
#include
#include
#include
#include
#include
usingnamespacestd;
/*===============allthestructures===============*/
typedefstructFrame
{
COORDposition[2];
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_INFOcursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
//把第y行,[x1,x2)之间的坐标填充为ch
voiddrawRow(inty,intx1,intx2,charch)
{
SetPos(x1,y);
for(inti=0;i<=(x2-x1);i)
cout< } //在a,b纵坐标相同的前提下,把坐标[a,b]之间填充为ch voiddrawRow(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列,[y1,y2]之间的坐标填充为ch voiddrawCol(intx,inty1,inty2,charch) { inty=y1; while(y! =y21) { SetPos(x,y); cout< y; } } //在a,b横坐标相同的前提下,把坐标[a,b]之间填充为ch voiddrawCol(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.X1,b.X-1,row); drawRow(b.Y,a.X1,b.X-1,row); drawCol(a.X,a.Y1,b.Y-1,col); drawCol(b.X,a.Y1,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; drawFrame(49,0,79,4,'-','|');//drawoutputframe drawFrame(49,4,79,9,'-','|');//drawscoreframe drawFrame(49,9,79,20,'-','|');//drawoperateframe drawFrame(49,20,79,24,'-','|');//drawothermessageframe SetPos(52,6); cout<<"得分: "; 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<<"("< } 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<<"制作: LJF神犇"; 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.X1; position[4].X=centren.X2; for(inti=0;i<=4;i) position[i].Y=centren.Y; for(inti=6;i<=8;i) position[i].Y=centren.Y1; 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<<"^"; } } } voidGame: : drawBulletToNull() { for(inti=0;i<10;i) if(bullet[i].Y! =30) { COORDpos={bullet[i].X,bullet[i].Y1}; 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].X3; enemy[i].position[1].Y=enemy[i].position[0].Y2; } } 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].Y1}; 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].X3; enemy[i].position[1].Y=enemy[i].position[0].Y2; } } } 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].X3; enemy[i].position[1].Y=enemy[i].position[0].Y2; 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< if(rank! =rankf) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个打飞机的小游戏 编写 一个 飞机 小游戏