程序设计综合实践报告
信息科学与工程学院
2015年12月20 日
1
目 录
1.概述. . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. .1
1.1关卡设置. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . .1
1.2敌机设置. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . .1
1.3战机设置. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . .2
1.4游戏设置. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . .2
2.相关技术. . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .2
2.1 Windows定时器技术. . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. .2
2.2双缓冲技术. . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .3
2.3获取矩形区域. . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. .3
3.总体设计与详细设计. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . .3
3.1系统模块划分. . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. .3
3.2主要功能模块. . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. .4
4.编码实现. . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .4
4.1初始准备. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . .4
4.2战机对象. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . .6
4.3敌机对象. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . .8
4.4道具对象. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . .9
4.5主要内容. . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . .10
4.6窗口显示信息. . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . ..19
5.实训中遇到的主要问题及解决方法. . . . . . . . .. . . . . .. . . . . .. .20
5.1产生中断及解决方案. . . . . . . . . . . .. . . . . .. . . . . .. . . . . ..20
2
5.2图片闪烁问题及解决方案. . . . . . . . .. . . . . .. . . . . .. . . . . .20
6.实训体会. . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . .22
3
飞机大战游戏设计与实现
1.概述
项目飞机大战
主要功能有以下几点
1.1关卡设置
本次飞机大战游戏中共设置了四个关卡 第一关的难度设置较低 仅有敌机对其进行攻击 第二关在原有的基础上增加一些补血的小道具 当积分达到一定的时候便会出现该道具 并且敌机出现的频率也比第一关高 第三关在第二关的基础上新出现了小boss 并增加了其他的道具第四关在第三关的基础上再新
出现大boss 当积分达到要求以及大 boss被消灭后通关成功。
1.2敌机设置
小敌机随机出现 炮弹也随机发射 当小敌机与战机相撞或被战机的子弹击中时小敌机消失。当达到一定积分时小 boss出现并随机发射出与小敌机一样的炮弹但是炮弹分三个方向发射出。当小 boss被战机的子弹击中或与战机相撞时失去5滴血。当到达四关并且积分足够多时出现大 boss 同小boss一样 当大boss与战机相撞或被战机子弹击中时失去 1滴血。除此之外 小boss
1
和大boss上方都有血条显示 当血条消失时意味着生命消失 大boss和小boss消失。小boss会在屏幕上随机出现和走动出了屏幕后会在屏幕的任意地方再随
机出现直至血量为0消失。大boss则在屏幕中随机走动不出屏幕直至血量
为0消失。
1.3战机设置
战机初始有五条生命每条命的血量为 50 所获得的积分以及其生命值、血条都在窗口的左上角显示。 在第一、 二关时 按空格键战机会出现两个向上发射的炮弹到第三、 四关的时候按空格键战机会发射三个不同方向的炮弹。战
机吃到药瓶道具时血量会增加 20 但不可以超过50 吃到闪电道具时便可放大招放大招的次数为 15 。 当战机被敌方的炮弹击中或与敌方相撞时血量减少减少为0时生命值减1直至生命值为0。
1.4游戏设置
进入游戏时 会有背景音乐 窗口左上角显示战机所得积分及其生命值。 根据积分情况进入不同的关卡。 游戏通关时屏幕清空 并显示通关成功 按Y可重新开始游戏。 当战机的血量以及生命值为 0时游戏失败 屏幕清空并显示游戏结束按Y即可重新开始游戏。
2.相关技术
2.1 Windows 定时器技术
Windows定时器是一种输入设备它周期性地在每经过一个指定的时间间
2
隔后就通知应用程序一次。程序将时间间隔告诉 windows 然后w indows给你的程序发送周期性发生的 WM_YIM ER消息以表示时间到了。本程序在
On C re at e()函数中使用了编号为1的定时器控制了每30毫秒刷新一次。
2.2双缓冲技术
在内存中创建一个与屏幕绘图区域一致的对象 先将图形绘制到内存这个对象上再一次性将这个对象上的图形拷贝到屏幕上 这样即可解决图片闪烁问题。本程序在绘制滚动背景以及飞机敌机等中用到了该技术。
2.3获取矩形区域
用CRect定义一个对象利用这个对象得到要用到的矩形区域用
Inters ectRect 函数来判断两个源矩形是不是有重合的部分。
3.总体设计与详细设计
3.1系统模块划分
飞机大战游戏主要模块可以说是有几个重要的类组成的。 首先是老师给出的CGameObject类 以及在其派生下的
Bo mb,Ball,Ene my,MyPlane,Explos ion,AddBlood 等等此处不一一列举。另外还有CObject派生的BackGround类。
如下图
3
4
4.编码实现
4.1初始准备
5
6
御云怎么样?炎炎暑期即将来临,御云(royalyun)香港、美国服务器开启大特惠模式。御云是新成立的云服务提供商,主要提供香港、美国的云服务器,不久将开启虚拟主机业务。我们的香港和美国主机采用CN2 GIA线路。目前,香港cn2 gia vps仅7.9元每月起,美国vps仅8.9/月,续费同价,可叠加优惠,香港云服务器国内延迟一般在50ms左右,是搭建网站的最佳选择,但是请不要用于违法用途。点击进...
hypervmart怎么样?hypervmart是一家成立了很多年的英国主机商家,上一次分享他家还是在2年前,商家销售虚拟主机、独立服务器和VPS,VPS采用Hyper-V虚拟架构,这一点从他家的域名上也可以看出来。目前商家针对VPS有一个75折的优惠,而且VPS显示的地区为加拿大,但是商家提供的测速地址为荷兰和英国,他家的优势就是给到G口不限流量,硬盘为NVMe固态硬盘,这个配置用来跑跑数据非常...
PhotonVPS 服务商我们是不是已经很久没有见过?曾经也是相当的火爆的,我们中文习惯称作为饭桶VPS主机商。翻看之前的文章,在2015年之前也有较多商家的活动分享的,这几年由于服务商太多,乃至于有一些老牌的服务商都逐渐淡忘。这不有看到PhotonVPS商家发布促销活动。PhotonVPS 商家七月份推出首月半价Linux系统VPS主机,首月低至2.5美元,有洛杉矶、达拉斯、阿什本机房,除提供普...