资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
计算机技术基础课程设计C语言设计报告题目:简单潜艇大战一、 选题背景:随着人们生活水平的提高,人们对精神生活的要求也随之提高了,当然,娱乐也成了人们生活中必不可少的一部分,为此,我用C语言编辑了一个简单的简单潜艇大战游戏程序。它操作起来简单方便,运行速度快。二、设计思想:简单潜艇大战就是玩家和电脑对战的游戏,玩家在确保本身不被敌人击中的情况下击中敌人则得分,若被敌人击中游戏结束。此程序利用了if,for,while等多种语句进行了编译,而且多次使用了for语句进行了循环,用if语句进行操作,if语句是用来处理条件选择的一种语句。此游戏可以任意移动玩家的位置。三、程序流程图结束若电脑中弹则玩家得分游戏继续,若玩家中弹则游戏结束图形初始化开始玩家敌人判断是否攻击敌人判断是否攻击玩家否否(敌人在攻击范围之内) (玩家在攻击范围之内)四、程序清单#include #include #include #include #define KEY_ESC 0x01#define KEY_SPACE 0x39#define KEY_LEFT 0x4b#define KEY_RIGHT 0x4dint speed=10000;char key_state128,key_pressed128;/*键盘操作用的变量*/int score=0;/*得分*/char scorestr10;/*输出分数的变量*/struct Fire/*子弹的结构体*/int x;int y;int start;/*是否发射炮弹*/amyfire6;/*屏幕上最多有5个敌人可以发子弹*/struct Play/*玩家的结构体*/int x;int y;struct Fire fire6;life;play;struct Amy/*敌人的结构体*/int x;int y;int speed;/*敌人的速度*/int color;int direction;life;amy6;void InitGraph(void);/*图形初始化*/void CloseGraph(void);/*图形结束*/void GamePlay(void);/*具体玩游戏*/void DrawPlay(void);/*画玩家*/void DrawAmy(int i);/*画敌人*/void DrawFire(int x,int y,int n);/*画子弹,0去除,1显示*/void DrawAmyFire(int x,int y,int n);/*画子弹,0去除,1显示*/void DrawBlack(int x,int y,int color);/*去除原来地方的物体*/void PrScore();/*输出得分*/int GetKey(int ScanCode);/*这里开始都是按键函数*/void interrupt far (*OldInt9Handler)();void far interrupt NewInt9();void InstallKeyboard();void ShutDownKeyboard();void main(void)InitGraph();/*图形初始化*/GamePlay();/*具体玩游戏*/CloseGraph();/*图形结束*/void InitGraph(void)/*图形初始化*/int gd=DETECT,gm;initgraph(&gd,&gm,c:tc);cleardevice();InstallKeyboard();void DrawPlay(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);void DrawAmy(int i)/*画敌人*/setfillstyle(SOLID_FILL,amyi.color);bar(amyi.x-20,amyi.y-10,amyi.x+20,amyi.y);setfillstyle(SOLID_FILL,GREEN);if(amyi.direction=1)bar(amyi.x-20,amyi.y-10,amyi.x-10,amyi.y);elsebar(amyi.x+10,amyi.y-10,amyi.x+20,amyi.y);void DrawBlack(int x,int y,int color)/*去除原来地方的物体*/setfillstyle(SOLID_FILL,color);bar(x-20,y-10,x+20,y);void DrawFire(int x,int y,int n)/*画子弹,0去除,1显示*/if(n=0)setfillstyle(SOLID_FILL,BLUE);elsesetfillstyle(SOLID_FILL,0);setcolor(BLUE);fillellipse(x,y,5,5);void DrawAmyFire(int x,int y,int n)/*画子弹,0去除,1显示*/if(n=0)setfillstyle(SOLID_FILL,BLUE);elsesetfillstyle(SOLID_FILL,YELLOW);/*敌人的炮弹是黄的*/setcolor(BLUE);fillellipse(x,y,3,3);void PrScore()/*输出得分*/setfillstyle(SOLID_FILL,8);/*把原来分数去除*/bar(30,0,200,40);setcolor(11);/*输出新得分*/settextstyle(0,0,2);sprintf(scorestr,%d,score);outtextxy(30,20,scorestr);void GamePlay(void)/*具体玩游戏*/int i,j;setfillstyle(SOLID_FILL,BLUE);bar(0,100,640,480);setfillstyle(SOLID_FILL,8);bar(0,0,640,99);play.x=200;play.y=99;/*玩家初始位置*/for(i=0;i6;i+)play.firei.start=0;/*一开始的子弹都为没发射状态*/amyfirei.start=0;amyi.life=0;play.life=1;DrawPlay();/*玩家初始位置*/PrScore();/*输出得分*/randomize();while(1) for(i=0;i6;i+)/*查找玩家是否有发射的子弹*/ if(play.firei.start=1)/*发射的子弹*/ DrawFire(play.firei.x,play.firei.y,0);/*去除原来子弹位置*/ play.firei.y+=3; DrawFire(play.firei.x,play.firei.y,1);/*显示新位置*/ for(j=0;j(amyj.x-22)&play.firei.x(amyj.y-14)&play.firei.y480)/*子弹超出屏幕就等于消失*/ play.firei.start=0; DrawFire(play.firei.x,play.firei.y,0); for(i=0;i6;i+)/*敌人炮弹的产生*/ if(amyi.life=1&amyi.color14&amyfirei.start=0)/*敌人发射炮弹的条件*/ amyfirei.start=1; amyfirei.x=amyi.x; amyfirei.y=amyi.y-10; for(i=0;i(play.x-14)&amyfirei.x(play.x+14)&(amyfirei.y+3)100)/*击中玩家*/ play.life=0; amyfirei.start=0; DrawAmyFire(amyfirei.x,amyfirei.y,0); DrawBlack(play.x,play.y,8);/*去除玩家*/ break; if(amyfirei.y96)/*敌人炮弹超出海洋就消失*/ amyfirei.start=0; setfillstyle(SOLID_FILL,8); setcolor(8); fillellipse(amyfirei
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号