ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:41.45KB ,
资源ID:6897924      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6897924.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C程序 简单潜艇大战.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C程序 简单潜艇大战.docx

1、C程序 简单潜艇大战计算机技术基础课程设计C语言设计报告题目:简单潜艇大战 学院:化学工程学院 专业:制药工程班级:050607班*指导老师:*设计时间:2006年1月2 日题目:简单潜艇大战一、选题背景:随着人们生活水平的提高,人们对精神生活的要求也随之提高了,当然,娱乐也成了人们生活中必不可少的一部分,为此,我用C语言编辑了一个简单的简单潜艇大战游戏程序。它操作起来简单方便,运行速度快。二、设计思想:简单潜艇大战就是玩家和电脑对战的游戏,玩家在确保本身不被敌人击中的情况下击中敌人则得分,若被敌人击中游戏结束。此程序利用了if,for,while等多种语句进行了编译,而且多次使用了for语句

2、进行了循环,用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 scorestr

3、10;/*输出分数的变量*/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);/*图形结束*

4、/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

5、 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 DrawP

6、lay(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.dir

7、ection=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

8、(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);s

9、etcolor(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;/*一开始的子弹都为没发射状

10、态*/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-

11、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.

12、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.x,amyfirei.y,3,3); delay(speed);/*间隔时间可以自己定

13、*/ if(play.life!=1)/*玩家被击中*/ break; for(i=0;i6;i+) if(amyi.life=0)/*出现一个敌人后就跳出循环*/ amyi.life=1; amyi.color=rand()%4+10;/*敌人的颜色*/ amyi.y=rand()%300+130;/*高度随机*/ amyi.speed=2+rand()%10;/*敌人的移动速度随机*/ amyi.direction=rand()%2;/*敌人的移动方向,0左边,1右边出来*/ if(amyi.direction=0) amyi.x=-20; else amyi.x=660; break;

14、if(GetKey(KEY_ESC)/*退出键*/ break; if(GetKey(KEY_SPACE)/*发射*/ for(i=0;i6;i+) if(play.firei.start=0)/*发射一颗子弹后跳出循环*/ play.firei.x=play.x; play.firei.y=105; play.firei.start=1; break; if(GetKey(KEY_RIGHT)&play.x20)/*左键的控制*/ DrawBlack(play.x,play.y,8); play.x-=10; DrawPlay(); for(i=0;i660|amyi.x-20)/*敌人超出

15、屏幕范围就消失*/ amyi.life=0; if(play.life=0)/*被击中失败的话*/ setcolor(6); settextstyle(0,0,3); outtextxy(250,40,GAME OVER);while(1)if(GetKey(KEY_ESC)/*结束游戏按ESC*/break;void CloseGraph(void)/*图形结束*/ShutDownKeyboard();closegraph();void far interrupt NewInt9(void)unsigned char ScanCode,temp;ScanCode=inportb(0x60);

16、temp=inportb(0x61);outportb(0x61,temp | 0x80);outportb(0x61,temp & 0x7f);if(ScanCode&0x80) ScanCode&=0x7f; key_stateScanCode=0; else key_stateScanCode=1; key_pressedScanCode=1; outportb(0x20,0x20);void InstallKeyboard(void)int i;for(i=0;i128;i+)key_statei=key_pressedi=0;OldInt9Handler=getvect(9); /*

17、中断向量值*/setvect(9,NewInt9); /*中断程序NewInt9地址存入指定的中断向量表中INT 09H*/void ShutDownKeyboard(void)setvect(9,OldInt9Handler);int GetKey(int ScanCode)int res;res=key_stateScanCode|key_pressedScanCode;key_pressedScanCode=0;return res;五、主要解决问题的方法及技术关键 1、主要问题及解决方法(1)用if语句用来处理条件选择(2)用while,for语句进行多次循环2、技术关键 (1)循环的嵌套 (2) 条件的判断六、设计结果说明 1、设计优点:程序运用多种语句的循环嵌套,条件判断巧妙的设计了这个简单的游戏程序,便于理解。2、设计缺点:对于习惯了鼠标图形化的操作的人来说,使用键盘操作有些麻烦。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1