目 录 1. 概述 3 1.1 实训项目简介 3 1.2 实训功能说明 3 1.2.1 基本功能 3 1.2.2 附加功能 3 2. 相关技术 4 2.1 Windows定时器技术 4 2.2 透明贴图实现技术 4 2.3 CObList链表 5 2.4获取矩形区域 6 2.5使用AfxMessageBox显示游戏过程中的提示信息 6 2.6内存释放 6 2.7 CImageList处理爆炸效果 6 2.8对话框的应用 6 3. 总体设计与详细设计 7 3.1 系统模块划分 7 3.2 主要功能模块 8 3.2.1 系统对象类图 8 3.2.2 系统主程序活动图 9 3.2.3 系统部分流程图 9 4. 编码实现 12 4.1 绘制游戏背景位图程序 12 4.2 飞机大战游戏对象的绘制程序 13 4.3 飞机大战游戏对象战机位置的动态控制 15 4.4 飞机大战游戏对象之间的碰撞实现 17 4.5 游戏界面输出当前信息 19 5. 项目程序测试 20 5.1战机移动及子弹发射模块测试 20 5.2 敌机及炸弹模块测试 20 5.3 爆炸模块测试 20 6. 实训中遇到的主要问题及解决方法 21 7. 实训体会 21 1. 概述 1.1 实训项目简介   本次实训项目是做一个飞机大战的游戏,应用MFC编程,完成一个界面简洁流畅、游戏方式简单,玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是MFC编程中的一些函数、链表思想以及贴图技术。 1.2 实训功能说明 1.2.1 基本功能   (1)设置一个战机具有一定的速度,通过键盘,方向键可控制战机的位置,空格键发射子弹。   (2)界面中敌机出现的位置,以及敌机炸弹的发射均为随机的,敌机与敌机炸弹均具有一定的速度,且随着关卡难度的增大,数量和速度均增加。   (3)对于随机产生的敌机和敌机炸弹,若超过矩形区域,则释放该对象。   (4)添加爆炸效果,包括战机子弹打中敌机爆炸、敌机炸弹打中战机爆炸、战机与敌机相撞爆炸以及战机子弹与敌机炸弹相撞爆炸四种爆炸效果。且爆炸发生后敌机、子弹、炸弹均消失,战机生命值减一。 1.2.2 附加功能   (1) 为游戏界面添加了背景图片,并在战机发射子弹、战机击中敌机、敌机击中战机、以及战机敌机相撞时均添加了背景音效。   (2)为游戏设置了不同的关卡,每个关卡难度不同,敌机与敌机炸弹的速度随着关卡增大而加快,进入第二关以后敌机从上下方均会随机出现,且随机发射炸弹。   (3)第一关卡敌机从上方飞出,速度一定,战机每打掉一直敌机则增加一分,每积十分,则为战机增加一个生命值,当战机得分超过50分则可进入下一关;进入第二、三关时敌机速度加快,分别从上下两方飞出,此时战机每得分20、30分,才会增加一个生命值,得分超过100、150分则进入下一关、通关。   (4) 在游戏界面输出当前游戏进行信息,包括当前得分、当前关卡以及击中敌机数量。   (5)增加了鼠标控制战机位置这一效果,战绩的位置随着鼠标的移动而移动,并且点击鼠标左键可使得战机发射子弹。   (6)实现了暂停游戏的功能,玩家可通过键盘上的‘Z’键,对游戏进行暂停。   (7)通过对话框的弹出可提示玩家是否查看游戏说明、是否进入下一关、是否重新开始等消息,使得玩家可自己选择。 2. 相关技术 2.1 Windows定时器技术   Windows定时器是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。程序将时间间隔告诉Windows,然后Windows给您的程序发送周期性发生的WM_TIMER消息以表示时间到了。本程序中使用多个定时器,分别控制不同的功能。在MFC的API函数中使用SetTimer()函数设置定时器,设置系统间隔时间,在OnTimer()函数中实现响应定时器的程序。 2.2 透明贴图实现技术   绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。   在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数。整个功能的实现过程如下:    (1) 创建一张大小与需要绘制图像相同的位图作为“掩码”位图;    (2) 将新创建的“掩码”位图存储至掩码位图的设备描述表中;    (3) 把位图设备描述表的背景设置成“透明色”,不需要显示的颜色;    (4) 复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图设备描述表中存放的位图与位图设备描述表中的位图一样;    (5) 把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;    (6) 把“掩码”位图与这个时候对
2021-06-24 10:45:25 24.33MB MFC C++ 飞机大战
1
可适用任何文法 可输出匹配过程 有错误处理不会影响执行 文法有使用者输入 很好啊 莫要错过 经vc6.0编译执行通过100%可用
1
MFC(c++)实现的socket聊天工具 AES加密~可以传输文件,多线程传输 同时多个传输线程 并且可以实现远程关机
2021-06-22 22:35:33 9.72MB MFC c++ socket 聊天
1
C语言编写的简单聊天工具,单聊,群聊。 多线程,信号,网络编程等。
2021-06-22 19:07:23 53KB C语言
1
项目介绍 这是用 C 语言编写的名为 Battleship 的流行游戏的实现。正在使用用于创建子进程的 fork 系统调用以及用于在进程之间交换消息的管道。 该游戏在很大程度上依赖于 ncurses 编程库,允许开发人员开发在终端仿真器下运行的类似 GUI 的应用软件。 可以在上找到详细的游戏说明。 可以在和找到有关 ncurses 的良好信息来源。 截图 安装 要在ubuntu/debian系统上手动安装先决条件,请键入以下内容: sudo apt-get install libncurses5-dev 组件 游戏分为多个文件(源和标题)。 ###grid.{c,h} 负责构建和更新网格的函数。 所描绘的各种徽标背后的逻辑也在此处实现。 ###util.{c,h} 用户和竞争对手都使用的函数。 ###user.{c,h} 用户需要的功能。 ###rival.{c,h} Riva
2021-06-22 15:04:59 14KB C
1
C实现操作系统作业低级调度先来先服务算法 最短作业算法 最短剩余时间算法
2021-06-21 12:00:47 128KB C 操作系统 先来先服务 最短作业
1
运用一元多项式运算的基本法则,对一元多项式的加法、减法运算进行设计,并有人机交换界面
2021-06-21 09:59:41 73KB C语言 一元多项式 源程序
1
使用C语言基于epoll实现一个websocket的服务,包含了session的管理。资源由个人整理总结用于学习 解压后make命令使用生成mana_svr可执行文件,其中上传了一个简单的index.html文件用于调试
2021-06-20 19:53:55 36KB C实现websocket epoll websocket
1
椭圆曲线算法的C语言实现。给出椭圆曲线密码体制的公钥,私钥等参数,实现用椭圆曲线密码体制加解密文件
2021-06-19 14:34:13 468KB ECC,加解密
1