计算机技术基础c语言课程设计潜艇大战Word文档格式.docx
- 文档编号:13816755
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:9
- 大小:40.86KB
计算机技术基础c语言课程设计潜艇大战Word文档格式.docx
《计算机技术基础c语言课程设计潜艇大战Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机技术基础c语言课程设计潜艇大战Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
#defineKEY_ESC0x01
#defineKEY_SPACE0x39
#defineKEY_LEFT0x4b
#defineKEY_RIGHT0x4d
intspeed=10000;
charkey_state[128],key_pressed[128];
/*键盘操作用的变量*/
intscore=0;
/*得分*/
charscorestr[10];
/*输出分数的变量*/
structFire/*子弹的结构体*/
{
intx;
inty;
intstart;
/*是否发射炮弹*/
}amyfire[6];
/*屏幕上最多有5个敌人可以发子弹*/
structPlay/*玩家的结构体*/
structFirefire[6];
life;
}play;
structAmy/*敌人的结构体*/
intspeed;
/*敌人的速度*/
intcolor;
intdirection;
}amy[6];
voidInitGraph(void);
/*图形初始化*/
voidCloseGraph(void);
/*图形结束*/
voidGamePlay(void);
/*具体玩游戏*/
voidDrawPlay(void);
/*画玩家*/
voidDrawAmy(inti);
/*画敌人*/
voidDrawFire(intx,inty,intn);
/*画子弹,0去除,1显示*/
voidDrawAmyFire(intx,inty,intn);
voidDrawBlack(intx,inty,intcolor);
/*去除原来地方的物体*/
voidPrScore();
/*输出得分*/
intGetKey(intScanCode);
/*这里开始都是按键函数*/
voidinterruptfar(*OldInt9Handler)();
voidfarinterruptNewInt9();
voidInstallKeyboard();
voidShutDownKeyboard();
voidmain(void)
InitGraph();
GamePlay();
CloseGraph();
}
voidInitGraph(void)/*图形初始化*/
intgd=DETECT,gm;
initgraph(&
gd,&
gm,"
c:
\\tc"
);
cleardevice();
InstallKeyboard();
voidDrawPlay(void)/*画玩家*/
setfillstyle(SOLID_FILL,6);
bar(play.x-20,play.y-10,play.x+20,play.y);
setfillstyle(SOLID_FILL,4);
bar(play.x-20,play.y-10,play.x-10,play.y);
voidDrawAmy(inti)/*画敌人*/
setfillstyle(SOLID_FILL,amy[i].color);
bar(amy[i].x-20,amy[i].y-10,amy[i].x+20,amy[i].y);
setfillstyle(SOLID_FILL,GREEN);
if(amy[i].direction==1)
bar(amy[i].x-20,amy[i].y-10,amy[i].x-10,amy[i].y);
else
bar(amy[i].x+10,amy[i].y-10,amy[i].x+20,amy[i].y);
voidDrawBlack(intx,inty,intcolor)/*去除原来地方的物体*/
setfillstyle(SOLID_FILL,color);
bar(x-20,y-10,x+20,y);
voidDrawFire(intx,inty,intn)/*画子弹,0去除,1显示*/
if(n==0)
setfillstyle(SOLID_FILL,BLUE);
setfillstyle(SOLID_FILL,0);
setcolor(BLUE);
fillellipse(x,y,5,5);
voidDrawAmyFire(intx,inty,intn)/*画子弹,0去除,1显示*/
setfillstyle(SOLID_FILL,YELLOW);
/*敌人的炮弹是黄的*/
fillellipse(x,y,3,3);
voidPrScore()/*输出得分*/
setfillstyle(SOLID_FILL,8);
/*把原来分数去除*/
bar(30,0,200,40);
setcolor(11);
/*输出新得分*/
settextstyle(0,0,2);
sprintf(scorestr,"
%d"
score);
outtextxy(30,20,scorestr);
voidGamePlay(void)/*具体玩游戏*/
inti,j;
bar(0,100,640,480);
bar(0,0,640,99);
play.x=200;
play.y=99;
/*玩家初始位置*/
for(i=0;
i<
6;
i++)
play.fire[i].start=0;
/*一开始的子弹都为没发射状态*/
amyfire[i].start=0;
amy[i].life=0;
play.life=1;
DrawPlay();
PrScore();
randomize();
while
(1)
for(i=0;
i++)/*查找玩家是否有发射的子弹*/
{
if(play.fire[i].start==1)/*发射的子弹*/
DrawFire(play.fire[i].x,play.fire[i].y,0);
/*去除原来子弹位置*/
play.fire[i].y+=3;
DrawFire(play.fire[i].x,play.fire[i].y,1);
/*显示新位置*/
for(j=0;
j<
j++)/*判断子弹是否击中敌人*/
if(play.fire[i].x>
(amy[j].x-22)&
&
play.fire[i].x<
(amy[j].x+22)&
play.fire[i].y>
(amy[j].y-14)&
play.fire[i].y<
amy[j].y+5)/*击中敌人*/
play.fire[i].start=0;
/*子弹消失*/
amy[j].life=0;
/*敌人生命结束*/
score+=10;
/*得分增加*/
DrawBlack(amy[j].x,amy[j].y,BLUE);
/*去除敌人*/
PrScore();
}
if(play.fire[i].y>
480)/*子弹超出屏幕就等于消失*/
i++)/*敌人炮弹的产生*/
if(amy[i].life==1&
amy[i].color<
14&
amyfire[i].start==0)/*敌人发射炮弹的条件*/
amyfire[i].start=1;
amyfire[i].x=amy[i].x;
amyfire[i].y=amy[i].y-10;
i++)/*敌人炮弹移动以及移动*/
if(amyfire[i].start==1)/*子弹存在*/
DrawAmyFire(amyfire[i].x,amyfire[i].y,0);
amyfire[i].y-=2;
DrawAmyFire(amyfire[i].x,amyfire[i].y,1);
/*画敌人炮弹新位置*/
if(amyfire[i].x>
(play.x-14)&
amyfire[i].x<
(play.x+14)&
(amyfire[i].y+3)<
100)/*击中玩家*/
play.life=0;
amyfire[i].start=0;
DrawBlack(play.x,play.y,8);
/*去除玩家*/
break;
if(amyfire[i].y<
96)/*敌人炮弹超出海洋就消失*/
setfillstyle(SOLID_FILL,8);
setcolor(8);
fillellipse(amyfire[i].x,amyfire[i].y,3,3);
delay(speed);
/*间隔时间可以自己定*/
if(play.life!
=1)/*玩家被击中*/
if(a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机技术 基础 语言 课程设计 潜艇 大战