程序设计综合实践报告.doc

程序设计综合实践报告.doc

ID:11599104

大小:290.78 KB

页数:22页

时间:2018-07-12

程序设计综合实践报告.doc_第1页
程序设计综合实践报告.doc_第2页
程序设计综合实践报告.doc_第3页
程序设计综合实践报告.doc_第4页
程序设计综合实践报告.doc_第5页
资源描述:

《程序设计综合实践报告.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、程序设计综合实践报告姓名梁琨学号201301050817班级信息13-1项目名称飞机大战游戏设计与实现实习地点科技园实习时间2015-10-26至2015-11-6实习成绩指导教师签字数学与系统科学学院2015年11月6日目录1.概述12.相关技术12.1数据链表12.2双缓冲13.总体设计与详细设计23.1系统模块划分23.2主要功能模块24.编码实现125.实训中遇到的主要问题及解决方法206.实训体会201.概述项目:飞机大战主要功能:本款基于MFC平台所制作的游戏,具有极大的休闲娱乐功能。玩家通过操纵我机,通过发射子弹机会敌机来积分,分数越高说明

2、了玩家坚持的越长。游戏开始界面向玩家进行了游戏按键的功能说明,游戏中设置暂停按键,可以方便玩家继续游戏。游戏还自带无敌模式,以及我机大招,极大地提高了游戏的可玩性。2.相关技术本程序主要运用了链表和双缓冲的技术。链表的应用方便了对数据成员的访问和处理,简化了代码,支持插入和移除表中任意位置上的节点;双缓冲主要用于图像的处理,在内存中重新绘图后复制到前台,同时禁止背景刷新,避免因图像刷新过于频繁导致画面出现闪烁现象。2.1数据链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。使用链表结构可以充分利用计

3、算机内存空间,实现灵活的内存动态管理。由于常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换,因此链表最大的优点是允许插入和移除表上任意位置上的节点。在程序运行过程中,根据游戏对象的种类划分不同的链表,每个链表单一的存储一类数据,在进行处理、绘图时,通过对链表的遍历,实现对数据的访问,再根据所要实现的功能,对不同的对象做出不同的处理,对数据成员的插入和移除也变得轻松了许多。2.2双缓冲在图形图象处理编程过程中,双缓冲是一种基本的技术。窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗

4、体在重绘时由于过频的刷新会引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PAINT的响应很频繁的时候,这种反差也就越发明显。于是我们就看到了闪烁现象。第19页共22页双缓冲我们会很自然的想到,避免背景色的填充是最直接的办法。但是那样的话,窗体上会变的一团糟。因为每次绘制图象的时候都没有将原来的图象清除,造成了图象的残留,于是窗体重绘时,画面往往会变的乱七八糟。所以单纯的禁止背景

5、重绘是不够的。我们还要进行重新绘图,但要求速度很快,于是我们想到了使用BitBlt函数。它可以支持图形块的复制,速度很快。我们可以先在内存中作图,然后用此函数将做好的图复制到前台,同时禁止背景刷新,这样就消除了闪烁。以上也就是双缓冲绘图的基本的思路。3.总体设计与详细设计3.1系统模块划分游戏规则子系统模块名称功能简述人工智能人机对战规则的实现游戏子系统模块名称功能简述应用程序对象游戏程序的加载、游戏对象的绘制、游戏规则的调用、玩家的键盘事件获取游戏对象各个游戏对象的抽象父类战机对象战机类敌机对象敌机类、大敌机类炸弹对象炸弹1类、炸弹2类爆炸对象爆炸类文

6、字对象文字类3.2主要功能模块模块名称人工智能功能描述人机对战规则规则接口与属性voidAI(void);数据结构与算法(注:红色加粗部分为新加代码!)voidCPlaneGameView::AI(){if(m_pMe==NULL)return;//检测四个方向键,移动战机for(inti=0;i<4;i++){intnMeMotion=0;m_pMe->SetVerMotion(0);m_pMe->SetHorMotion(0);//初始化nMeMotion=GetKey(VK_UP);第19页共22页if(nMeMotion==1)m_pMe->Se

7、tVerMotion(1);nMeMotion=GetKey(VK_DOWN);if(nMeMotion==1)m_pMe->SetVerMotion(-1);nMeMotion=GetKey(VK_RIGHT);if(nMeMotion==1)m_pMe->SetHorMotion(1);nMeMotion=GetKey(VK_LEFT);if(nMeMotion==1)m_pMe->SetHorMotion(-1);}//随机产生小敌机staticintnCreator=rand()%5+10;if(nCreator<=0){nCreator=ran

8、d()%5+10;m_ObjList[enEnemy].AddTail(newC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。