




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XX大学程序设计根底课内工程说明书学生姓名:XXX学号:XXXXX学院:XXXXXXX班级:XXXXX题目:飞机大战指导教师XXXXXXWXX月XX日1设计目的小标题黑体五号字制作一个简单的飞机大战游戏.2设计内容此飞机大战游戏是一款射击游戏,它随着你的分数增加,而不断改变你的等级,同时等级越高难度就会越大,一旦敌机逃离那么你的分数将会减少,与敌机相撞你的生命值将会减少,按鼠标左键可以连续发射子弹,鼠标移动限制我机移动.3. 本设计所采用的数据结构使用了两个动态链表,分别储存敌机图片的左上角坐标X,Y以及子弹图片的左上角坐标X,Y,删除子弹与敌机以及敌机与我机的碰撞都是基于图片的左上角坐标X,
2、Y来判定.4功能模块详细设计3.1 子弹相关模块3.1.1 详细设计思想当检测到左键按下时,调用添加子弹的函数并进行传参鼠标的位置坐标产生新的子弹;当子弹击中敌机移动子弹的函数来判断是否击中后调用删除子弹函数来删除子弹并释放内存;移动子弹函数在中还包括子弹是否出界并删除的函数;游戏结束后把所有的子弹都删掉.3.1.2 核心代码/子弹intbulletvx=0;intbulletvy=-20;intbulletwidth=6;intbullethigh=11;typedefstructTag_Bulletintx;inty;structTag_Bullet*Next;bullet,*lbulle
3、t;bulletbullethead;lbulletlbhead=&bullethead,lbtail=&bullethead;/添加子弹-返回添加的子弹指针lbulletpushbullet(intbx,intby);lbulletremovebullet(lbulletit);/删除子弹-返回下一个子弹的指针lbulletfreebullet();/删除全部子弹lbulletmovebullet();/移动子弹/添加子弹lbulletpushbullet(intbx,intby)lbtail=lbtail->Next=(lbullet)malloc(sizeof(bu
4、llet);lbtail->x=bx;lbtail->y=by;lbtail->Next=NULL;returnlbtail;/删除子弹lbulletremovebullet(lbulletIt)lbulletcbullet;for(cbullet=lbhead;cbullet->Next!=NULL;cbullet=cbullet->Next)if(cbullet->Next=It)if(It=lbtail)/尾节点单独处理lbtail=cbullet;cbullet->Next=It->Next;free(It);break;returncb
5、ullet->Next;/清空子弹lbulletfreebullet()for(lbulletcp=lbhead->Next,Nextp;cp!=NULL;)Nextp=cp->Next;free(cp);cp=Nextp;lbhead->Next=NULL;returnlbhead;/移动子弹lbulletmovebullet()for(lbulletcbullet=lbhead->Next;cbullet!=NULL;)cbullet->x+=bulletvx;cbullet->y+=bulletvy;for(lenemycenemy=lenemy
6、head->Next;cenemy!=NULL;cenemy=cenemy->Next)/检测子弹与敌机的碰撞if(pengzhuang1(cbullet,cenemy)inta,b;a=cenemy->x;b=cenemy->y;removebullet(cbullet);removeenemy(cenemy);show(a-35,b-60);pushenemy(rand()%400,0);/敌机死亡,添加新的敌机break;/判断子弹是否出界if(cbullet->x<0|cbullet->x>=WIDTH|cbullet->y<
7、=0|cbullet->y>=HEIGHT)cbullet=removebullet(cbullet);elsecbullet=cbullet->Next;returnlbhead;/检测子弹与敌机是否碰撞intpengzhuang1(lbulletbullet,lenemyenemy)if(!(bullet->x+bulletwidth<enemy->x|bullet->x>enemy->x+enemywidth|bullet->y+bullethigh<enemy->y|bullet->y>enemy-&g
8、t;y+enemyhigh)score+=3;return!(bullet->x+bulletwidth<enemy->x|bullet->x>enemy->x+enemywidth|bullet->y+bullethigh<enemy->y|bullet->y>enemy->y+enemyhigh);3.2 敌机相关模块3.2.1 详细设计思想一开始就随机产生三个敌机,子弹击中敌机就会删除敌机(子弹相关模块中)并调用产生敌机的函数来再产生一个新的敌机;移动敌机的函数中同样检测敌机是否出界并调用删除敌机函数;在用户数据更新
9、函数中:检测我机是否与敌机碰撞;游戏结束之后将所有飞机删除.3.2.2 核心代码/敌机intenemyvx=0;intenemyvy=5;intenemywidth=110;intenemyhigh=84;typedefstructTag_Enemyintx;inty;structTag_Enemy*Next;enemy,*lenemy;enemyenemyhead;lenemylenemyhead=&enemyhead,lenemytail=&enemyhead;lenemypushenemy(intex,intey);/添加敌机-返回添加的敌机指针lenemyremovee
10、nemy(lenemyit);/删除敌机-返回下一个敌机的指针lenemyfreeenemy();/删除全部敌机lenemymoveenemy();/移动敌机/用户数据更新函数voidupdateinput()MOUSEMSGm;while(MouseHit()m=GetMouseMsg();if(m.uMsg=WM_MOUSEMOVE)plancex=m.x;plancey=m.y;cenemy=lenemyhead->Next;cenemy!=NULL;cenemy=cenemy->Next)/检测敌机与我机是否碰撞if(pengzhuang2(plancex,plancey,
11、cenemy)inta,b;a=cenemy->x;b=cenemy->y;removeenemy(cenemy);show(a-35,b-60);pushenemy(rand()%400,0);/TODO:敌机死亡,添加新的敌机break;elseif(m.uMsg=WM_LBUTTONDOWN)pushbullet(plancex+13,plancey+40);charin;if(_kbhit()in=getch();if(in=32)d=3;/添加敌机lenemypushenemy(intbx,intby)lenemytail=lenemytail->Next=(len
12、emy)malloc(sizeof(enemy);lenemytail->x=bx;lenemytail->y=by;lenemytail->Next=NULL;returnlenemytail;/删除敌机lenemyremoveenemy(lenemyIt)lenemycenemy;for(cenemy=lenemyhead;cenemy->Next!=NULL;cenemy=cenemy->Next)if(cenemy->Next=It)if(It=lenemytail)/尾节点单独处理lenemytail=cenemy;cenemy->Next=
13、It->Next;free(It);break;returncenemy->Next;/清空敌机lenemyfreeenemy()Nextp=cp->Next;free(cp);cp=Nextp;)lenemyhead->Next=NULL;returnlenemyhead;)/移动敌机lenemymoveenemy()(for(lenemycp=lenemyhead->Next;cp!=NULL;)(cp->x+=enemyvx;cp->y+=enemyvy;if(cp->x<0|cp->x>=WIDTH|cp->y&l
14、t;=0|cp->y>=HEIGHT)(cp->y=0;cp->x=rand()%410;score-=1;)else(cp=cp->Next;)returnlenemyhead;)/检测敌机与我机是否碰撞intpengzhuang2(intx,inty,lenemyenemy)if(!(x+100<enemy->x|x>enemy->x+enemywidth|y+151<enemy->y|y>enemy->y+enemyhigh)l-;return!(x+100<enemy->x|x>enemy->x+enemywidth|y+151<enemy->y|y>enemy->y+enemyhigh);5心得体会详细从这次的C语言工程开发,我学到了许多东西,主要有:(1)对全局变量和局部变量有了全新的熟悉,局部变量更适合于分函数,在一个分函数中更能发挥它的独特优势,而全局变量更能适于整个工程的使用,便于在各个分函数中使用,但有一定的缺陷,我认为局部变量更加好用.(2)传参的使用可以方便函数之间的联系,使得函数的调用能够发挥更加大的作用,建立分函数之间的独特联系,我也用到了去进行传链表的一个节点的指针,使得链表的功能更加的强大,当然这只是传了节点的指针,但我之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025学年初中教辅材料、地方教材采购项目(重新招标)招标文件
- 服务响应时间和服务保障方案
- 2025年建筑学专升本建筑力学检测试卷(含答案)
- 解析卷-人教版八年级物理上册第5章透镜及其应用-生活中的透镜同步训练练习题(含答案详解)
- 考点解析-人教版八年级物理上册第5章透镜及其应用-透镜综合测评试题(含答案解析)
- 2025年中级经济师《建筑与房地产》考试真题及答案(完整版)
- 2025年燃气经营企业从业人员专业考试经典试题及答案
- 2025年勘察设计注册环保工程师(大气污染防治专业案例)复习题及答案
- 2025年煤矿企业主要负责人安全生产知识和管理能力考试自测试题及答案
- 2025年数控车床编程题库及答案
- 2025年国家公务员考试《行测》真题卷(行政执法)及答案
- 2025至2030中国脑深部电刺激(DBS)设备市场应用规模与重点企业发展调研报告
- 屋顶彩钢加固施工方案
- 茶叶生产企业质量管理体系手册
- 车间高温烫伤安全培训课件
- 财税咨询公司知识培训课件
- 云计算资源租用协议
- 公务礼仪培训课件
- 2025年秋新北师大版数学3年级上册全册同步教案
- 插秧机培训课件
- 学校承接社会考试应急预案(3篇)
评论
0/150
提交评论