C语言飞机大战源码Word格式文档下载.docx
《C语言飞机大战源码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言飞机大战源码Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
else
{
SetPos(0,25);
"
errorcode01:
无法填充行,因为两个坐标的纵坐标(x)不相等"
;
system("
pause"
);
}
//把第x列,[y1,y2]之间的坐标填充为ch
voiddrawCol(intx,inty1,inty2,charch)
inty=y1;
while(y!
=y2+1)
SetPos(x,y);
y++;
//在a,b横坐标相同的前提下,把坐标[a,b]之间填充为ch
voiddrawCol(COORDa,COORDb,charch)
if(a.X==b.X)
drawCol(a.X,a.Y,b.Y,ch);
errorcode02:
无法填充列,因为两个坐标的横坐标(y)不相等"
//左上角坐标、右下角坐标、用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];
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);
称号:
SetPos(52,10);
操作方式:
SetPos(52,12);
a,s,d,w控制战机移动。
SetPos(52,14);
p暂停游戏。
SetPos(52,16);
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};
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<
returntrue;
returnfalse;
voidprintCoord(COORDa)
cout<
("
a.X<
"
a.Y<
)"
voidprintFrameCoord(Framea)
printCoord(a.position[0]);
-"
printCoord(a.position[1]);
intdrawMenu()
SetPos(30,1);
PlaneWar"
drawRow(3,0,79,'
drawRow(5,0,79,'
SetPos(28,4);
w和s选择,k确定"
SetPos(15,11);
1.简单的敌人"
SetPos(15,13);
2.冷酷的敌人"
drawRow(20,0,79,'
drawRow(22,0,79,'
SetPos(47,11);
简单的敌人:
SetPos(51,13);
简单敌人有着较慢的移动速度。
SetPos(24,21);
制作:
中北大学梦笔西谈"
intj=11;
SetPos(12,j);
>
//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(51,13);
"
SetPos(47,11);
}
break;
}
s'
if(j==11)
j=13;
"
冷酷的敌人:
冷酷的敌人移动速度较快。
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;
position[i].Y=centren.Y;
for(inti=6;
=8;
position[i].Y=centren.Y+1;
position[5].Y=centren.Y-1;
position[9].Y=centren.Y-2;
drawPlane()
9;
SetPos(position[i]);
if(i!
=5)
cout<
O"
elseif(i==5)
|"
drawPlaneToNull()
"
}
initBullet()
10;
bullet[i].Y=30;
drawBullet()
if(bullet[i].Y!
=30)
{
SetPos(bullet[i]);
^"
drawBulletToNull()
=30)
COORDpos={bullet[i].X,bullet[i].Y+1};
SetPos(pos);
cout<
}
initEnemy()
COORDa={1,1};
COORDb={45,15};
8;
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;
drawEnemy()
drawFrame(enemy[i].position[0],enemy[i].position[1],'
drawEnemyToNull()
'
}
Pause()
SetPos(61,2);
暂停中..."
charc=_getch();
while(c!
p'
)
c=_getch();
planeMove(charx)
if(x=='
a'
if(position[1].X!
=1)
for(inti=0;
=9;
position[i].X-=2;
if(position[7].Y!
=23)
position[i].Y+=1;
d'
if(position[4].X!
=47)
position[i].X+=2;
if(position[5].Y!
=3)
position[i].Y-=1;
bulletMove()
bullet[i].Y-=1;
if(bullet[i].Y==1)
drawThisBulletToNull(pos);
bullet[i].Y=30;
enemyMove()
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;
judgePlane()
8;
if(judgeCoordInFrame(enemy[i],position[j]))
SetPos(62,1);
坠毁"
drawFrame(enemy[i],'
+'
Sleep(1000);
GameOver();
break;
drawThisBulletToNull(COORDc)
SetPos(c);
drawThisEnemyToNull(Framef)
drawFrame(f,'
judgeEnemy()
for(intj=0;
j<
10;
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;
Shoot()
if(bullet[i].Y==30)
bullet[i].X=position[5].X;
bullet[i].Y=position[5].Y-1;
break;
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)
flag_rank=3;
intx=rank/5;
SetPos(60,6);
score;
if(rank!
=rankf)
SetPos(60,7);
if(x==5)
title="
初级飞行员"
elseif(x==4)
中级飞行员"
elseif(x==3)
高级飞行员"
elseif(x==2)
王牌飞行员"
title;
rankf=rank;
void